【问题标题】:CheckboxList TreeView复选框列表树视图
【发布时间】:2011-06-19 10:31:05
【问题描述】:

我在 ASP.NET 中有一个 CheckboxList,我想使用 jsTree 之类的东西将其转换为 TreeView。这可能吗? CheckboxLists 内的 CheckboxLists 节点最多嵌套四层。是否有可能将它们神奇地变成TreeView 或者我需要整天在代码隐藏中修补 JS

【问题讨论】:

    标签: jquery asp.net treeview jstree checkboxlist


    【解决方案1】:

    假设您可以计算每个节点的“深度”,您可以将以下代码添加到 OnPreRender 并显示您的项目分层:

    protected void overrided OnPreRender()
    {
        lstItems.Items.Do(a=>
        {
            var item = // get item from a.Value
            for(var i = 0; i< item.Depth; i++)
            {
                a.Text = "<span class='spacer'></span>" + a.Text;
            }
        });
    }
    

    并将以下规则添加到您的样式表中:

    span.spacer { width:20px; }
    

    虽然如果你想拥有折叠/展开功能,你需要添加一些我不会在这里包含的 javascript 操作(太简单了)

    附:重要的是,添加到 lstItems 的项目根据层次结构正确排序。我推荐的解决方案是使用以下方法作为数据源的排序键:

    public string GetFullPath()
    {
        if(Parent == null) return Key;
        return Parent.GetFullPath() + ">" + Key;
    }
    

    其中 Key 是一个唯一字段(在单亲的上下文中)。 - 可以是姓名、订单等。

    【讨论】:

    • 有趣的选项,但我最终选择了 RadTreeView。它为最少的工作提供了最大的灵活性(遗憾的是不是免费的)
    • 是的,不是免费的,这是我采用这种方法的主要原因。虽然如果你实现一次(作为扩展方法或其他东西)你可以永远使用它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-24
    • 2014-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-01
    相关资源
    最近更新 更多