在ASP.NET中,可以通過在Repeater控件的ItemTemplate中嵌套另一個Repeater控件來實現Repeater的嵌套使用。
以下是一個示例代碼:
<asp:Repeater ID="outerRepeater" runat="server" OnItemDataBound="outerRepeater_ItemDataBound">
<ItemTemplate>
<h3>Outer Item: <%# Container.ItemIndex + 1 %></h3>
<asp:Repeater ID="innerRepeater" runat="server">
<ItemTemplate>
<p>Inner Item: <%# Container.ItemIndex + 1 %></p>
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
</asp:Repeater>
在代碼中,外部的Repeater控件被命名為outerRepeater,內部的Repeater控件被命名為innerRepeater。在外部Repeater的ItemTemplate中,嵌套了一個內部Repeater。在代碼中,還添加了OnItemDataBound事件,用于動態綁定內部Repeater的數據。
在代碼的后端,可以使用類似以下的方式來綁定數據:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
List<OuterItem> outerItems = GetOuterItems(); // 獲取外部Repeater的數據
outerRepeater.DataSource = outerItems;
outerRepeater.DataBind();
}
}
protected void outerRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Repeater innerRepeater = (Repeater)e.Item.FindControl("innerRepeater");
OuterItem outerItem = (OuterItem)e.Item.DataItem;
innerRepeater.DataSource = outerItem.InnerItems; // 綁定內部Repeater的數據
innerRepeater.DataBind();
}
}
在代碼中,Page_Load事件中綁定了外部Repeater的數據。在outerRepeater_ItemDataBound事件中,通過FindControl方法找到內部Repeater控件,并綁定數據。
需要注意的是,內部Repeater控件的數據綁定是在外部Repeater的ItemDataBound事件中進行的,因為內部Repeater的數據源是依賴于外部Repeater的當前項的。