2010-08-26 55 views
0

我的數據庫中有一個實體,看起來像這樣;在嵌套中繼器中顯示分層數據

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

Where ParentID引用另一個Item.ID;

我想用ASP.net分級列出這些項目。我假設我想用一個asp:repeater來進行嵌套,但也許不是。如果有更好的選擇,我全力支持它。我特別感興趣的是3層以上的嵌套。

我正在使用linq C#4.0,如果有關係。

回答

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(); 
    } 
}