多层次的TreeView
问题描述:
我工作在三个层面上结合我Telerik的TreeView的多层次的TreeView
+Directories
*Archives
-Documents
*Directories
这是我的代码:
<% Html.Telerik().TreeView()
.Name("TeleTreeView")
.DragAndDrop(true)
.ExpandAll(true)
.BindTo(Model, mappings =>
{
mappings.For<SARS.Directory>(binding => binding
.ItemDataBound((item, directory) =>
{
item.Text = (string)directory.DirectoryName;
item.Value = (string)directory.NodeID;
item.ImagUrl="~/Images/Folder-Add-icon.png";
})
//Sub Directories
.Children(directory => directory.Directory1));
mappings.For<SARS.Directory>(binding => binding
.ItemDataBound((item, dir) =>
{
item.Text = dir.DirectoryName;
item.Value = (string)dir.NodeID;
item.ImagUrl="~/Images/Folder-Add-icon.png";
})
//Sub archives
.Children(directory => directory.Archives));
mappings.For<SARS.Archive>(binding => binding
.ItemDataBound((item, arch) =>
{
item.Text = arch.ArchiveName;
}));
})
.Render();%>
编辑:问题是我没有变档案级别。 我该怎么办?
答
这当前不支持。你不能指定不同类型的孩子。第二次致电Children()
将覆盖前一个。
答
Directory1应该包含像Archives这样的类的Iennumerable列表,那么它很容易得到子节点。我已经尝试了高达4级的层次结构。
答
最近我有同样的问题,所以一些节点的孩子将是一个不同的和/或混合型的:
- TypeA
- TypeA
- TypeA + TypeB
- TypeB
我解决了这个是简单地介绍了对各类然后绑定的接口方式树形界面:
public interface ITreeNode
{
int Id { get; }
string Name { get; }
IEnumerable<ITreeNode> ChildrenNodes { get; }
}
Html.Kendo().TreeView()
.BindTo(Model.CurrentHierarchy, mappings =>
{
mappings.For<ITreeNode>(binding => binding.ItemDataBound((item, node) =>
{
item.Id = node.Id.ToString();
item.Text = node.Name;
})
.Children(o => o.ChildrenNodes))
});
即1-行有分号,是否正确? – 2011-04-21 04:37:31
检查更新。 – Lisa 2011-04-21 08:27:54