如何扩展kendo ui treeview第一项及其子项第一项

时间:2013-07-09 14:18:46

标签: jquery kendo-ui kendo-treeview

我想扩展kendo ui treeview第一个项目及其第一个孩子。我已经在数据绑定中编写了代码

 $("#treeview").data("kendoTreeview").expand("li:first");
 $("#treeview").data("kendoTreeview").expand("li:first").children(".k-group");

但是只扩展第一项。不是展开项目的第一个孩子。我怎么能在kendo ui中做到这一点

3 个答案:

答案 0 :(得分:0)

声明一个全局变量

var counter = 2;

现在在树的数据绑定事件中

if(counter > 0) {
$("#treeview").data("kendoTreeView").expand('.k-item:first');
$("#treeview").data("kendoTreeView").expand('.k-item:first .k-item:first');
counter = counter - 1;
}

答案 1 :(得分:0)

如果按需加载数据(例如通过AJAX调用),问题是当执行以下行时,第二个节点(第一个孩子的第一个孩子)不存在

$("#treeview").data("kendoTreeView").expand("li:fist li:first")

要实现这一点,您必须在第一次expand()完成执行后执行该行。

我看到两个选项:

  1. 使用kendoTree活动

  2. 使用setTimeout(丑陋的方式)

  3. 广告1。

    var yourTreeSelector = "#youTreeId";
    var $tree = $(yourTreeSelector);
    var treeView = $tree.data("kendoTreeView");
    
    var $firstItem = $tree.find(' > ul > li.k-item:first');
    
    console.log($firstItem);
    //make sure selector is ok and first item exists
    if($firstItem.length){
       treeView.expand($firstItem); //expand first item
       var secondSelectedFlag = false; //init flag to false
    
       //handler method
       selectSecond = function(){
          var $fistChildOfFirstItem = $firstItem.find(' > ul > li.k-item:first');
          console.log($fistChildOfFirstItem);
          //make sure expand will execute only when node exists and was not expanded earlier
          if(!secondSelectedFlag && $fistChildOfFirstItem.length){
              secondSelectedFlag = true; 
    
              treeView.expand($fistChildOfFirstItem);//expand on selected node
              treeView.unbind("dataBound");//unbind method
          }  
       }
    
       treeView.bind("dataBound", selectSecond);//bind a handler method to dataBound event
    }
    

    Ad 2.在第一个节点后面扩展代码:

    setTimeout(
        function (){
            var $fistChildOfFirstItem = $firstItem.find(' > ul > li.k-item:first');
            console.log($fistChildOfFirstItem);
            treeView.expand($fistChildOfFirstItem);
        },
        3000 //3 seconds is reasonable amount of time
    );
    

答案 2 :(得分:-1)

$("#treeview").data("kendoTreeView").expand("li:first"); // expands first child
$("#treeview").data("kendoTreeView").expand("li:first li:first"); // expands first child or the first child