2011-11-10 8 views
1

私はTagFilterという2つのリピーターを持つユーザーコントロールを持っています。 コントロールはページに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(); 
関連する問題