2013-08-19 2 views
3

Есть ли взлома в kendo ui treeview, поэтому, когда пользователь нажимает на корневой узел, он вызывает метод select, как и с другим узлом ветви.Kendo UI TreeView выбираемый корень

В настоящее время нет никаких параметров, которые можно найти для этого поведения, и метод select активируется только для ветвей.

var areaDropDownTreeView = $(tvElement).kendoExtDropDownTreeView({ 
     treeview: { 
      template: kendo.template($(tvTemplate).html()), 
      dataSource: dataSource 
     } 
    }).data("kendoExtDropDownTreeView"); 

    var $dropdownRootElem = $(areaDropDownTreeView.dropDownList().element).closest("span.k-dropdown"); 
    var $treeviewRootElem = $(areaDropDownTreeView.treeview().element).closest("div.k-treeview"); 

    // Unbind default select event. 
    areaDropDownTreeView.treeview().unbind("select"); 
    // Bind new select event. 
    areaDropDownTreeView.treeview().bind("select", function (e) { 
     // want to do something here for every node including the root, but the root is not triggering select, only the branches are 
    }); 
+0

Спасибо за вопрос – Zan

ответ

2

Я хотел бы начать с убедившись, что вы правильно строить свой TreeView:

$("#myTreeView").kendoTreeView({ ...settings go here... }); 

Вот пример выбора работает на всех узлах дерева:

http://jsbin.com/edamuj/1260/edit?html,output

OnSelect будет пожар для любого узла в дереве, i ncluding корневого узла. Я бы предположил, что это связано с тем, что вы связываете с bizzaro. Если вы хотите контролировать действия (возможно, вы не всегда хотите, чтобы onSelect что-то делал), это может помочь управлять этими решениями самой функцией выбора события. Это рекомендуемый подход. Если вы не соблюдаете рекомендуемый список подходов в документации кендо - ожидайте неожиданные результаты.

Вместо этого установите событие связывания внутри вашей декларации TreeView (это упрощенный пример):

$("#treeview").kendoTreeView({ 
        select: onSelect, 
       }); 
      }); 

А затем обработать событие обычно так:

 $(document).ready(function() { 
       function onSelect(e) { 
        alert("selection event triggered"); 
       } 
     } 
+0

Я правильно построил свой TreeView. OnSelect действительно срабатывает для каждого из узлов, за исключением «root». Если вы не понимаете, что такое корень, root - это единственный узел, который запускает дерево. Подробнее об этой теме читайте здесь http://en.wikipedia.org/wiki/Tree_structure –

+0

Реализация, описанная выше, работает для наших приложений для любого узла в дереве. Какую версию кендо вы используете? Вы можете попробовать и отключить поведение древовидного дерева по умолчанию, используя функцию preventDefault(), но это будет означать, что событие уже запускается. Если вы опубликуете JSBin своего древовидного дерева, он не будет работать - это значительно облегчит диагностику. – Ray