2011-04-21 172 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)) 
    });