2011-04-21 168 views
0

我工作在三个层面上结合我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();%> 

编辑:问题是我没有变档案级别。 我该怎么办?

+0

即1-行有分号,是否正确? – 2011-04-21 04:37:31

+0

检查更新。 – Lisa 2011-04-21 08:27:54

回答

0

这当前不支持。你不能指定不同类型的孩子。第二次致电Children()将覆盖前一个。

1

Directory1应该包含像Archives这样的类的Iennumerable列表,那么它很容易得到子节点。我已经尝试了高达4级的层次结构。

0

最近我有同样的问题,所以一些节点的孩子将是一个不同的和/或混合型的:

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