自引用分层数据绑定

发布于 2025-01-03 05:49:01 字数 662 浏览 0 评论 0原文

我正在使用带有 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; }

 }

我还使用 Fluent NHibernate,因此我将子项和父项存储在我的实体中。

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

谢谢。

I'm using Extensions for ASP.NET MVC Q3 2011(open source version) with Razor engine and Asp.net MVC3 architecture.
I want to bind a grid to a entity in my database which has self referring structure (like a tree). Therefore, I can not define it like examples with fixed levels, because I do not know how many levels this grid has. So, I want to bind my grid dynamically to a model.

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

 }

I'm also using Fluent NHibernate and because of that I store children and parent in my entity.

Is there a way to do this? I couldn't find anything in documentations.
Am I missing something? because in Ajax and Winform components, it has been implemented.

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

残花月 2025-01-10 05:49:01

您无法自动执行此操作,您需要进行 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(....);
    })

:)

希望对您有所帮助。

You cannot do it automatically, You need a foreach iteration and generating the items and then add them to the tree manually.

I did it for PanelBar when I needed to show a hierarchicy.

Here is an example :

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

)

Hope to be helpful.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文