我的数据库中有一个看起来像这样的实体;
Item
{
ID,
Text,
Description,
...
ParentID
}
其中ParentID引用另一个Item.ID;
我想使用ASP.net按层次列出这些项目。我假设我想使用asp:repeater进行嵌套,但可能不是。如果有更好的选择我就是全部。我特别感兴趣的是3层以上的嵌套。
如果重要的话,我正在使用linq C#4.0。
答案 0 :(得分:0)
TreeView可能是显示分层数据的不错选择。您可以找到许多使用linq实体绑定树视图的示例。然而,Repeater仍然是一种选择。
下面的文章将对XML,LINQ和TreeView有所帮助 http://www.4guysfromrolla.com/articles/042308-1.aspx
如果没有XML数据,还有其他方法可以做到这一点。
您仍然可以使用Repeater,如:
<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();
}
}
答案 1 :(得分:0)
这是一个非常有用的扩展方法,适合您尝试做的事情。它可以让你轻松绑定到一个层次结构并使用树形视图显示(如果你想这样做也可以使用转发器):