自引用分层数据绑定



我正在使用带有Razor引擎和ASP.NET MVC3架构的ASP.NET MVC扩展2011年第3季度(开源版本)。我想将一个网格绑定到数据库中的一个实体,该实体具有自引用结构(如树)。因此,我不能像固定级别的示例那样定义它,因为我不知道这个网格有多少级别。因此,我想将我的网格动态绑定到一个模型。

 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组件中,它已经实现了。

谢谢。

您不能自动完成,您需要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(....);
    })

)

希望能有所帮助。

最新更新