2013-08-30 9 views
5

Mam drzewo treeview kendo o węźle z {id, value}. i chcę uzyskać identyfikator i wartość wybranego węzła po kliknięciu przycisku.Odczyt wybranych wartości węzła z widoku drzewa kendo?

Jak mogę to zdobyć? Czy są tam jakieś wbudowane funkcje, aby je uzyskać?

Oto mój przykładowy kod:

$("mytree").kendoTreeView({ 
       dataSource: mydata, 
       dataTextField: "Name", 
       dataValueField: "Id", 
      }); 

Odpowiedz

19

Użyj metody .select(). Pamiętaj również o innych dostępnych metodach.

var tv = $('.mytree').data('kendoTreeView'), 
    selected = tv.select(), 
    item = tv.dataItem(selected); 
if (item) { 
    alert('Selected item: ' + item.Name + ' : ' + item.Id + ' (uid: ' + item.uid + ')'); 
} else { 
    alert('Nothing selected'); 
} 

Fiddle here

+0

Hej Ryan, dzięki za odpowiedź. Ale tutaj daje wartość null dla item.text, a item.id daje Guida. Spodziewam się dokładnego tekstu i wartości, która jest wiązana przez źródło danych. – jestges

+0

Moje pola tekst/wartość w przykładzie nie pasują dokładnie do Ciebie. Zobacz moją aktualizację i zaktualizowane skrzypce – ryan

+0

Hej Ryan, nie wiem, co robię źle. Podążałem tą samą drogą, ale daje ona tv.dataItem nie jest błędem funkcji. – jestges

5
** 

var tv = $("#treeview-right").data("kendoTreeView"); 
    var selectedNode = tv.select(); 
    var item = tv.dataItem(e.node); 
    item.text will give you the text of the selected node. 

**

+0

"e nie jest zdefiniowane" – PAULDAWG

+0

Czy możesz edytować swój wpis i dodać opis, dlaczego odpowiedziałeś tym kodem, aby inni mogli głosować na Ciebie? –

+0

e będzie niezdefiniowane, jeśli nie zostanie powiązany z obsługą zdarzeń. @PAULDAWG Zapewnię lepszą odpowiedź. –

2

Nie zgadzam się z wybraną odpowiedź, ponieważ w zależności od tego, co faktycznie można mieć 1 krok za właściwie wybranej wartości.

Gdybyś miał jakąś prostą funkcję kasowania to ten rodzaj kodu działa prawidłowo

var treeview = $("#treeview").data("kendoTreeView"); 
var selectedNode = treeview.select(), 
item = treeview.dataItem(selectedNode); 

Jednak po uruchomieniu gry z katalogów bardziej skończy się ubolewając, że jak ja.

Najlepszą praktyką jest zamocowanie do obsługi zdarzeń

np

var treeview = $("#treeview").kendoTreeView({ 
    expanded: true, 
    select: onSelect, 
    ....   
}).data("kendoTreeView"); 

wybierzfunkcja

function onSelect(e) { 

    var treeview = $("#treeview").data("kendoTreeView"); 
    var item = treeview.dataItem(e.node); 

    if (item) { 
     console.log('Selected item: ' + item.whatever + ' | Id = ' + item.Id + ' | Type = ' + item.Type); 
     var someVariable = item.whatever; 
    } else{ 
     console.log('nothing selected'); 
    } 
Powiązane problemy