1

我使用带有Razor引擎和Asp.net MVC3体系结构的ASP.NET MVC Q3 2011(开放源代码版本)扩展。 我想将一个网格绑定到具有自引用结构(如树)的数据库中的实体。因此,我无法将其定义为具有固定级别的示例,因为我不知道此网格有多少个级别。所以,我想将我的网格动态绑定到模型。自我引用分层数据绑定

public class Category : Entity 
{ 
    public virtual int Id {private set; get; } 
    public virtual string Title { set; get; } 
    public virtual string Description { set; get; } 
    public virtual string ParentsPath { set; get; } 
    public virtual IList<Category> Children { get; private set; } 
    public virtual Category Parent { get; set; } 

} 

我也使用流利的NHibernate,因此我在我的实体中存储子项和父项。

有没有办法做到这一点?我在文件中找不到任何东西。 我错过了什么吗?因为在Ajax和Winform组件中,它已经实现。

谢谢。

回答

1

你不能自动做到这一点,你需要一个foreach迭代并生成项目,然后将它们手动添加到树中。

我做了PanelBar的时候需要显示一个层次结构。

下面是一个例子:

@(Html.Telerik().PanelBar() 
.Name("Details") 
.ExpandMode(PanelBarExpandMode.Multiple)  
.Items(items => 
    { 
     var parent = Model.ParentWorkItem; 
     List<WorkItem> lst = new List<WorkItem>(); 

     while (parent != null) 
     { 
      lst.Add(parent); 
      parent = parent.ParentWorkItem; 
     }; 
     for (int i = lst.Count-1; i >=0;i--) 
     { 
      parent = lst[i]; 
      items.Add()      
       .Expanded(false) 
       .Text("...") 
       .LoadContentFrom(...); 
     } 
     items.Add() 
      .Expanded(true) 
      .Text(...) 
      .Content(....); 
    }) 

希望是有帮助的。