我使用Razor引擎和Asp.net MVC3架构的ASP.NET MVC Q3 2011 Extensions(开源版本)。 我想将网格绑定到我的数据库中的实体,该实体具有自引用结构(如树)。因此,我不能像固定级别的示例那样定义它,因为我不知道此网格有多少级别。所以,我想动态地将我的网格绑定到模型。
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; }
}
我也使用Fluent NHibernate,因此我将孩子和父母存储在我的实体中。
有办法做到这一点吗?我在文件中找不到任何东西。 我错过了什么吗?因为在Ajax和Winform组件中,它已经实现了。
感谢。
答案 0 :(得分: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(....);
})
)
希望有所帮助。