2011-11-10 3 views
1

그래서 두 개의 리피터가있는 TagFilter라는 사용자 정의 컨트롤이 있습니다. 컨트롤이 페이지에 N 번 추가되며 모든 리피터는 다른 데이터 테이블에 바인딩됩니다. 이 할당 때 내가 디버거에서 코드를 단계별로 할 때 여러 개의 데이터 테이블이 사용자를 만들려고 데이터 집합으로 통해동적 데이터 바인딩 사용자 컨트롤을 추가하려면 어떻게해야합니까?

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="TagFilter.ascx.cs" Inherits="Hite.Web.Controls.TagFilter" %> 
<div class="tagDiv"> 
<h3> 
    <span style="">Results By :</span> 
    <asp:Repeater ID="rptUsed" runat="server"> 
     <ItemTemplate> 
      <span class="UsedTags"> 
       <asp:ImageButton ID="ImageButton1" runat="server" OnCommand="UsedPops_Remove" CommandArgument='<%# DataBinder.Eval(Container.DataItem, "tagid") %>' 
        ImageUrl="~/Images/errorIcon.png" /> 
       <a href="#"> 
        <%# DataBinder.Eval(Container.DataItem, "tagname") %></a> </span> 
     </ItemTemplate> 
    </asp:Repeater> 
</h3> 
<asp:Repeater ID="rptUnused" runat="server"> 
    <ItemTemplate> 
     <b style="padding-left: 5px; padding-right: 5px;"> 
      <asp:LinkButton ID="LinkButton1" runat="server" OnCommand="lbPop_Command" CommandArgument='<%# DataBinder.Eval(Container.DataItem, "tagid") %>'><%# DataBinder.Eval(Container.DataItem, "tagname") %> 
      </asp:LinkButton></b> 
    </ItemTemplate> 
</asp:Repeater> 
<br /> 
</div> 

public partial class TagFilter : System.Web.UI.UserControl 
{ 
    public DataTable UsedDT { get; set; } 
    public DataTable UnusedDT { get; set; } 
    public SearchParameters searchParams { get; set; } 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     rptUsed.DataSource = UsedDT; 
     rptUsed.DataBind(); 

     rptUnused.DataSource = UnusedDT; 
     rptUnused.DataBind(); 
    } 

I 루프가

  TagFilter tf = (TagFilter)Page.LoadControl("/Controls/TagFilter.ascx"); 
      tf.UnusedDT = ds.Tables[3]; 
      tf.UsedDT = ds.Tables[4]; 
      tagdiv.Controls.Add(tf); 

제어, 데이터 테이블은 행이 컨트롤에 있지만 page_Load에는 행이 없습니다. 누군가 내 오류를 찾으실 수 있습니까? 페이지 라이프 사이클 문제입니까?

답변

0

usercontrol에 메소드를 만들어야합니다.

public void BindData() 
{ 
    rptUsed.DataSource = UsedDT; 
    rptUsed.DataBind(); 

    rptUnused.DataSource = UnusedDT; 
    rptUnused.DataBind(); 
} 

다음 전화

tf.BindData(); 
관련 문제