1

kendo ui ツリービューの最初の項目とその最初の子を展開したいと思います。次のようにデータバインドにコードを記述しました

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

ただし、最初のアイテムのみを展開しています。展開されたアイテムの最初の子ではありません。剣道UIでこれを行うにはどうすればよいですか

4

3 に答える 3

0

オンデマンドでデータをロードする場合 (たとえば、AJAX 呼び出しを介して)、問題は、次の行が実行されたときに2 番目のノード (最初の子の最初の子)が存在しないことです。

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

これを実現するには、最初の expand() の実行が終了した直後にその行を実行する必要があります。

2 つのオプションが表示されます。

  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
);
于 2013-10-21T12:52:16.687 に答える
-1

グローバル変数を宣言する

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;
}
于 2013-07-11T17:24:02.847 に答える