2014-11-21 68 views
0

我已经得到了发树项目树视图此控制器方法:获取ID

private IEnumerable<TreeViewItemModel> GetTrees() 
{ 
    InstallationPlaceModel ipm = new InstallationPlaceModel(); 
    var gipo = ipm.getRootInstallationPlaces(); 
    List<TreeViewItemModel> fullTree = new List<TreeViewItemModel>(); 

    foreach (wsInstallationPlace.installationPlaceOutput father in gipo.installationPlaces) 
    { 
     var gipo2 = ipm.getChildInstallationPlaces(father.installationPlace.id); 
     List<TreeViewItemModel> childTree = new List<TreeViewItemModel>(); 

     foreach (wsInstallationPlace.installationPlaceOutput child in gipo2.installationPlaces) 
     { 
      TreeViewItemModel childTreeItem = new TreeViewItemModel 
      { 
       Text = child.installationPlace.mediumDescription, 
       Id = child.installationPlace.id 
      };   
      childTree.Add(childTreeItem); 
     } 
     TreeViewItemModel fatherTreeItem = new TreeViewItemModel 
     { 
      Text = father.installationPlace.mediumDescription, 
      Id = father.installationPlace.id, 
      Items = childTree 
     }; 
     fullTree.Add(fatherTreeItem); 
    } 
    ViewBag.mytree = fullTree; 
    return fullTree; 
} 

这是剑道的TreeView:

@(Html.Kendo().TreeView() 
    .Name("treeview") 
    .DragAndDrop(true) 
    .Events(e => e.Select("onSelect")) 
    .BindTo((IEnumerable<TreeViewItemModel>)ViewBag.mytree) 
) 

而这个函数来处理树节点的选择:

function onSelect(e) { 
    alert(this.text(e.node)); 
} 

当选择了一个节点,该节点的文本警报是二张开。我想显示节点的ID。我试过了:

function onSelect(e) { 
    alert(this.id(e.node)); 
} 

但没有运气。正如您在控制器方法中看到的,我正在填充textid属性,但我只能访问文本。任何帮助?

LIVE DEMO

回答

1

为了得到所选节点的id,你应该使用$(e.node).data("id")

function onSelect(e) { 
    alert($(e.node).data("id")); 
} 
+1

谢谢OnaBai,它的工作原理。我很惊讶,因为这些解决方案根本不直观,你知道我在哪里可以找到文档来指导我在剑道上?文档是必不可少的,我看不到任何有用的。此外,我看到你是一个剑道专家,你可以请检查[这个问题](http://stackoverflow.com/questions/26929767/passing-kendo-grid-selected-item-into-kendo-window)和帮我?再次谢谢你。 +1并且正确答案 – chiapa 2014-11-24 09:46:38