2013-07-09 47 views
0

我想擴展kendo ui treeview第一項及其第一個子項。我已將代碼寫入數據庫中的代碼如如何擴展kendo ui treeview第一項及其子項第一項

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

但是隻擴展了第一項。不是擴展項目的第一個孩子。我怎樣才能在劍道UI做

+0

是否使用'loadOnDemand'如果是這樣,那是不是因爲當你展開父那麼容易,它開始加載兒子,只有當兒子被加載時,你可以擴大它得到了盛大的孩子。 – OnaBai

+0

@OnaBai是的,我正在使用loadondemand。我如何做到這一點,當使用按需加載和不使用按需加載 – Jonathan

回答

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

它不起作用 – Jonathan

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

的必然事件。如果你按需加載數據(例如,通過AJAX呼叫),問題是第二個節點(第一個孩子的第一個孩子)不存在當執行下列行時:

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

爲了實現這一點,您必須在第一個expand()完成執行後立即執行該行。

我看到兩個選項:

  1. 使用kendoTree事件

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

廣告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 
} 

廣告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 
);