在ASP.NET中,要實現ListView的嵌套列表,你可以使用TemplateField
來自定義列表項的布局。這里有一個簡單的示例,展示了如何使用嵌套ListView來實現一個具有分層結構的列表。
ItemTemplate
屬性以定義頂層列表項的布局。在這個布局中,你可以使用一個數據綁定表達式來獲取當前項的數據,并添加另一個ListView作為子列表。<asp:ListView ID="ListView1" runat="server" ItemTemplate="TopLevelItemTemplate">
<LayoutTemplate>
<ul>
<asp:PlaceHolder ID="itemPlaceHolder" runat="server"></asp:PlaceHolder>
</ul>
</LayoutTemplate>
<ItemTemplate>
<li>
<%# Eval("Title") %>
<asp:ListView ID="NestedListView" runat="server" DataSource='<%# Eval("SubItems") %>'>
<LayoutTemplate>
<ul>
<asp:PlaceHolder ID="subItemPlaceHolder" runat="server"></asp:PlaceHolder>
</ul>
</LayoutTemplate>
<ItemTemplate>
<li>
<%# Eval("SubItemTitle") %>
</li>
</ItemTemplate>
</asp:ListView>
</li>
</ItemTemplate>
</asp:ListView>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
// 假設你有一個名為data的列表,其中包含頂層數據項
List<DataItem> data = GetData();
ListView1.DataSource = data;
ListView1.DataBind();
}
}
public class DataItem
{
public string Title { get; set; }
public List<SubItem> SubItems { get; set; }
}
public class SubItem
{
public string SubItemTitle { get; set; }
}
private List<DataItem> GetData()
{
// 這里可以是從數據庫或其他數據源獲取數據的邏輯
List<DataItem> data = new List<DataItem>();
// 添加頂層數據項
data.Add(new DataItem
{
Title = "Item 1",
SubItems = new List<SubItem>
{
new SubItem { SubItemTitle = "SubItem 1-1" },
new SubItem { SubItemTitle = "SubItem 1-2" }
}
});
// 添加更多頂層數據項...
return data;
}
這個示例中的GetData
方法返回一個包含頂層數據項的列表,每個頂層數據項都有一個子項列表。在ItemTemplate
中,我們使用一個數據綁定表達式來獲取當前項的數據,并添加一個嵌套的ListView來顯示子項。
你可以根據需要調整這個示例,以適應你的具體需求。