如何在C#的代码后台从Repeater向UserControl传递参数

3

我需要遍历一个集合并将值传递给一个用户控件。这是动态的,我无法弄清楚如何传递参数值。我正在使用重复器(repeater)。

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

在代码后台:
Repeater1.DataSource = _myCollection;
                Repeater1.DataBind();

任何帮助都将不胜感激!谢谢。

不知道为什么,但是上面的代码框完全失败了。我尝试粘贴我的重复器代码、输入它、用引号包裹它,并在它周围放置代码标签。失败了。 - mokumaxCraig
您可以将代码高亮显示,然后按下 {} 按钮。 - Justin Morgan
1
老兄,这让我抓狂了。感谢 Justin 提供的信息! - mokumaxCraig
3个回答

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();
    }
}

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接