我的數據庫中有一個實體,看起來像這樣;在嵌套中繼器中顯示分層數據
Item
{
ID,
Text,
Description,
...
ParentID
}
Where ParentID引用另一個Item.ID;
我想用ASP.net分級列出這些項目。我假設我想用一個asp:repeater來進行嵌套,但也許不是。如果有更好的選擇,我全力支持它。我特別感興趣的是3層以上的嵌套。
我正在使用linq C#4.0,如果有關係。
我的數據庫中有一個實體,看起來像這樣;在嵌套中繼器中顯示分層數據
Item
{
ID,
Text,
Description,
...
ParentID
}
Where ParentID引用另一個Item.ID;
我想用ASP.net分級列出這些項目。我假設我想用一個asp:repeater來進行嵌套,但也許不是。如果有更好的選擇,我全力支持它。我特別感興趣的是3層以上的嵌套。
我正在使用linq C#4.0,如果有關係。
TreeView可能是顯示分層數據的不錯選擇。你可以找到很多用linq實體綁定treeview的例子。不過Repeater仍然是一個選擇。
下面的文章將有助於有關XML,LINQ和TreeView http://www.4guysfromrolla.com/articles/042308-1.aspx
也有方法可以做到這一點沒有XML數據。
你仍然可以使用中繼器,如:
<asp:Repeater ID="rpParent" runat="server" OnItemDataBound="rpParent_ItemDataBound">
<ItemTemplate>
<%# Eval("Name") %>
<asp:Repeater ID="rpChild" runat="server">
<ItemTemplate>
<%# Eval("Name") %>
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
</asp:Repeater>
代碼背後:
public partial Page{
protected void rpParent_ItemDataBound(object sender, RepeaterEventArgs e){
Item ParentItem = e.Item.DataItem as Item;
Repeater rpChild = e.Item.FindControl("rpChild") as Repeater;
rpChild.DataSource = context.SelectChildObjectsByParentId(ParentItem.Id);
rpChild.DataBind();
}
}
這裏是你想要做什麼非常有用的擴展方法。它可以讓你輕鬆地綁定到一個層次結構,並顯示使用一個TreeView(或中繼器,如果你想做到這一點):