Показване на йерархични данни във вложени повторители

Имам обект в моята база данни, който изглежда така;

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

Където ParentID препраща към друг Item.ID;

Искам да изброя тези елементи йерархично с помощта на ASP.net. Предполагам, че искам да използвам asp:repeater, за да направя влагането, но може би не. Ако има по-добър вариант, аз съм за него. Конкретно се интересувам от 3+ нива на влагане.

Използвам linq C# 4.0, ако това има значение.


person Rick    schedule 26.08.2010    source източник


Отговори (2)


TreeView може да бъде добър избор за показване на йерархични данни. Можете да намерите много примери за обвързване на дървовиден изглед с linq обекти. Ретранслаторът обаче все още е избор.

Статията по-долу ще бъде полезна за 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();
    }
}
person Musa Hafalır    schedule 26.08.2010

Ето един доста полезен метод за разширение за това, което се опитвате да направите. Това ще ви позволи лесно да се свържете с иерархия и да показвате с помощта на дървовиден изглед (или повторител, ако искате да направите и това):

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

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

person Ocelot20    schedule 27.08.2010