【发布时间】:2011-06-19 10:31:05
【问题描述】:
我在 ASP.NET 中有一个 CheckboxList,我想使用 jsTree 之类的东西将其转换为 TreeView。这可能吗? CheckboxLists 内的 CheckboxLists 节点最多嵌套四层。是否有可能将它们神奇地变成TreeView 或者我需要整天在代码隐藏中修补 JS?
【问题讨论】:
标签: jquery asp.net treeview jstree checkboxlist
我在 ASP.NET 中有一个 CheckboxList,我想使用 jsTree 之类的东西将其转换为 TreeView。这可能吗? CheckboxLists 内的 CheckboxLists 节点最多嵌套四层。是否有可能将它们神奇地变成TreeView 或者我需要整天在代码隐藏中修补 JS?
【问题讨论】:
标签: jquery asp.net treeview jstree checkboxlist
假设您可以计算每个节点的“深度”,您可以将以下代码添加到 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 是一个唯一字段(在单亲的上下文中)。 - 可以是姓名、订单等。
【讨论】: