sventevit
sventevit

Reputation: 4816

How to add web user controls to repeater

Scenario:

My code:

<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click"/>
<asp:Repeater ID="rptExample" runat="server">
    <ItemTemplate>

    </ItemTemplate>
    <SeparatorTemplate><br /></SeparatorTemplate>
</asp:Repeater>

And:

protected void Button1_Click(object sender, EventArgs e)
{
    rptExample.DataSource = new List<UsrControl> {new UsrControl(), new UsrControl()};
    rptExample.DataBind();
}

Simple question - what should I put in ItemTemplate to make this work?

Edit - I also want to pass some parameters to UsrControl before rendering it.

Upvotes: 0

Views: 4019

Answers (2)

prespic
prespic

Reputation: 1685

Following your question in answer. You can catch every binding object in ItemDataBound event. So for example, as i used, set whole object as user control property.

protected void PersonesRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
        PersonLine line = (PersonLine)e.Item.FindControl("Person1");
        line.Person = e.Item.DataItem as Osoba;
    }
}

Ofcourse, you have to add the event handler to your repeater:

<asp:Repeater runat="server" ID="PersonesRepeater" OnItemDataBound="PersonesRepeater_ItemDataBound"><ItemTemplate>
        <my:Person ID="Person1" runat="server" />
    </ItemTemplate>
</asp:Repeater>

Upvotes: 1

IUnknown
IUnknown

Reputation: 22448

<asp:Repeater ID="rptExample" runat="server">
     <ItemTemplate>
          <uc:UsrControl runat="server" />
     </ItemTemplate>
     <SeparatorTemplate><br /></SeparatorTemplate>
</asp:Repeater>

protected void Button1_Click(object sender, EventArgs e)
{
    rptExample.DataSource = Enumerable.Range(0, 2);
    rptExample.DataBind();
}

Upvotes: 2

Related Questions