在嵌套的中继器中显示分层数据

时间:2010-08-26 14:21:22

标签: c# linq repeater

我的数据库中有一个看起来像这样的实体;

Item
{
    ID,
    Text,
    Description,
    ...
    ParentID
}

其中ParentID引用另一个Item.ID;

我想使用ASP.net按层次列出这些项目。我假设我想使用asp:repeater进行嵌套,但可能不是。如果有更好的选择我就是全部。我特别感兴趣的是3层以上的嵌套。

如果重要的话,我正在使用linq C#4.0。

2 个答案:

答案 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)

这是一个非常有用的扩展方法,适合您尝试做的事情。它可以让你轻松绑定到一个层次结构并使用树形视图显示(如果你想这样做也可以使用转发器):

http://www.scip.be/index.php?Page=ArticlesNET18#AsHierarchy

http://www.scip.be/index.php?Page=ArticlesNET23