Многоуровневое TreeView - PullRequest
       6

Многоуровневое TreeView

0 голосов
/ 21 апреля 2011

Я работаю над связыванием трех уровней с моим telerik 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();%>

Редактировать : Проблема в том, что я не получаю уровень Архивы. Что мне делать?

Ответы [ 3 ]

1 голос
/ 24 июля 2011

Directory1 должен содержать список Iennumerable класса, такого как Archives, тогда его дочерние узлы легко получить.Я пробовал до 4 уровней иерархии.

0 голосов
/ 12 августа 2015

У меня недавно была та же проблема, когда некоторые дочерние узлы были бы другого и / или смешанного типа:

 - 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))
     });
0 голосов
/ 06 мая 2011

В настоящее время это не поддерживается. Вы не можете указать детей другого типа. Второй вызов Children() перезапишет предыдущий.

...