Per gestire due repeater innestati:
<asp:Repeater runat="server" ID="groupItemRepeater" OnItemDataBound="groupItemRepeater_ItemDataBound">
<ItemTemplate>
<!-- bla bla -->
<asp:Repeater runat="server" ID="singleItemRepeater">
<ItemTemplate>
<!-- bla bla -->
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
</asp:Repeater>
E nel code behind:
protected void Page_Load(object sender, EventArgs e)
{
groupItemRepeater.DataSource = //loading;
groupItemRepeater.DataBind();
}
protected void groupItemRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
RepeaterItem item = e.Item;
if ((item.ItemType == ListItemType.Item) || (item.ItemType == ListItemType.AlternatingItem))
{
Repeater myRepeater = (Repeater)item.FindControl("singleItemRepeater");
if (myRepeater != null)
{
IList<MyClass> documenti = //loading ;
if (documenti.Count > 0)
{
myRepeater.DataSource = documenti;
myRepeater.DataBind();
}
else
{
item.Visible = false;
}
}
}
}
Se avessimo bisogno di un attributo dell'elemento padre nel repeater più interno, potremmo far riferimento al padre tramite .parent.parent.
Technorati tags:
.NET,
Csharp