2011-02-04 8 views
3

コレクションをループして値をUserControlに渡す必要があります。動的なので、パラメータ値を渡す方法を理解できません。私はリピーターを使用しています。背後にあるコードではCodeBehindのRepeaterからUserControlにパラメータを渡す方法C#

<asp:Repeater runat="server" id="Repeater1"> 
    <ItemTemplate> 
    <uc1:testControl ID="testControl1" runat="server" /> 
    </ItemTemplate> 
</asp:Repeater> 

Repeater1.DataSource = _myCollection; 
       Repeater1.DataBind(); 

任意の助けいただければ幸いです!おかげ

+0

わからない理由が、コードボックスが完全に上記のアップに失敗しました。私は、リピータコードを貼り付け、それを入力し、引用符で囲み、コードタグを貼り付けようとしました。失敗します。 – mokumaxCraig

+0

コードを強調表示して、** {} **ボタンを押すことができます。 –

+1

男、それはナッツを運転していた。情報ジャスティンありがとう! – mokumaxCraig

答えて

8

ASPXコード:

<asp:Repeater runat="server" id="Repeater1" OnItemDataBound="Repeater1_ItemDataBound"> 
    <ItemTemplate> 
     <uc1:testControl ID="testControl1" runat="server" /> 
    </ItemTemplate > 
</asp:Repeater> 

分離コード:

protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    testControl ctrl = e.Item.FindControl("testControl1") as testControl; 

    if (ctrl != null) 
     ctrl.MyParameterName = "Foo"; 
} 
0

はあなたがはるかに簡単な方法でそれを達成することができます

<asp:DataList RepeatLayout="Table" RepeatColumns="2" RepeatDirection="Horizontal" runat="server" ID="dl"> 
      <ItemTemplate>    
       <uc1:UCGroup ID="UCGroup1" runat="server" Title=<%# DataBinder.Eval(Container.DataItem, "RecipientGroup.Name") %> /> 

        <div class="template_over"> 
         <a href="/ScheduleCampaign/<%# DataBinder.Eval(Container.DataItem, "RecipientGroup.Name") %>"> 

         <%# DataBinder.Eval(Container.DataItem, "Email") %> 

        </a> 
        </div> 
       </ItemTemplate>    
      </asp:DataList> 

public partial class ChooseGroup : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     dl.DataSource = GroupsHndlr.GetExtendedRecipients(MySession.Current.ClientId); 
     dl.DataBind(); 
    } 
} 

コントロールのコード:

<asp:Label ID="lbltitle" runat="server"></asp:Label> 

<asp:Repeater ID="rpRecipients" runat="server"> 
    <ItemTemplate> 
     1 
     </ItemTemplate> 
</asp:Repeater> 

public partial class UCGroup : System.Web.UI.UserControl 
{ 
    public string Title { get; set; } 
    public List<string> Recipients { get; set; } 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     this.lbltitle.Text = Title; 
     this.rpRecipients.DataSource = Recipients; 
     this.rpRecipients.DataBind(); 
    } 
} 
関連する問題