我在 ASP.NET 中有一个CheckboxList
,我想使用 jsTree 之类的内容将其转换为TreeView
。这可能吗?通过 CheckboxLists 中的 CheckboxLists ,节点最多可嵌套四层。是否可以将它们神奇地变成TreeView
或者我是否需要在代码隐藏中使用 JS 整天修补?
答案 0 :(得分: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动作(也保持简单)
P.S。重要的是,添加到lstItems的项目是基于层次结构正确排序的。解决方案我建议使用以下方法作为数据源的排序键:
public string GetFullPath()
{
if(Parent == null) return Key;
return Parent.GetFullPath() + ">" + Key;
}
其中Key是唯一字段(在单个父元素的上下文中)。 - 它可以是名称,订单等。