DataList里面嵌套DataList的折叠菜单的实现
时间: 2024-01-11 09:05:43 浏览: 26
要实现DataList里面嵌套DataList的折叠菜单,可以按照以下步骤进行:
1. 在外层DataList的ItemTemplate中嵌套一个内层DataList,并将其Visible属性设置为false。
2. 在外层DataList的ItemDataBound事件中获取内层DataList的引用,并绑定内层DataList的数据源,最后将内层DataList的Visible属性设置为true。
3. 在外层DataList的ItemCommand事件中处理内层DataList的展开和折叠,可以通过判断CommandName属性来确定是展开还是折叠,然后设置内层DataList的Visible属性即可。
下面是一个示例代码片段:
```
<asp:DataList ID="outerDataList" runat="server" OnItemDataBound="outerDataList_ItemDataBound" OnItemCommand="outerDataList_ItemCommand">
<ItemTemplate>
<div>
<a href="#" onclick="return false;" commandname="expand" class="expand">展开</a>
<a href="#" onclick="return false;" commandname="collapse" class="collapse" style="display:none;">折叠</a>
<asp:DataList ID="innerDataList" runat="server" Visible="false">
<ItemTemplate>
<div><%#Eval("Name")%></div>
</ItemTemplate>
</asp:DataList>
</div>
</ItemTemplate>
</asp:DataList>
protected void outerDataList_ItemDataBound(object sender, DataListItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
DataList innerDataList = e.Item.FindControl("innerDataList") as DataList;
innerDataList.DataSource = GetInnerDataListDataSource();
innerDataList.DataBind();
innerDataList.Visible = true;
}
}
protected void outerDataList_ItemCommand(object source, DataListCommandEventArgs e)
{
if (e.CommandName == "expand")
{
DataList innerDataList = e.Item.FindControl("innerDataList") as DataList;
innerDataList.Visible = true;
e.Item.FindControl("expand").Visible = false;
e.Item.FindControl("collapse").Visible = true;
}
else if (e.CommandName == "collapse")
{
DataList innerDataList = e.Item.FindControl("innerDataList") as DataList;
innerDataList.Visible = false;
e.Item.FindControl("expand").Visible = true;
e.Item.FindControl("collapse").Visible = false;
}
}
```
在这个示例代码中,我们在外层DataList的ItemTemplate中嵌套了一个内层DataList,并且将其Visible属性设置为false。在外层DataList的ItemDataBound事件中获取内层DataList的引用,并绑定内层DataList的数据源,最后将内层DataList的Visible属性设置为true。在外层DataList的ItemCommand事件中处理内层DataList的展开和折叠,通过判断CommandName属性来确定是展开还是折叠,然后设置内层DataList的Visible属性即可。