2013-08-30 10 views
5

Ich habe eine Kendo Treeview mit einem Knoten mit {id, value}. und ich möchte die ID und den Wert eines ausgewählten Knotens erhalten, wenn ich auf eine Schaltfläche klicke.Lesen Sie die ausgewählten Knotenwerte aus der Kendo-Baumansicht?

Wie kann ich es bekommen? Gibt es eingebaute Funktionen, um es zu bekommen?

Hier ist mein Beispielcode:

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

Antwort

19

Verwenden Sie die .select() Methode. Sehen Sie sich auch die anderen verfügbaren Methoden an.

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

Hey Ryan, vielen Dank für Ihre Antwort. Aber hier gibt es null für item.text und item.id gibt einige Guid. Ich erwarte den genauen Text und Wert, der durch die Datenquelle gebunden ist. – jestges

+0

Meine Text/Wert-Felder im Beispiel stimmen nicht genau mit Ihren überein. Siehe mein Update und aktualisierte Geige – ryan

+0

Hey Ryan, ich weiß nicht, was ich falsch mache. Ich folgte dem gleichen Weg, aber es gibt tv.dataItem ist kein Funktionsfehler. – 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 ist nicht definiert" – PAULDAWG

+0

Können Sie Ihren Beitrag bearbeiten und eine Beschreibung hinzufügen, warum Sie mit diesem Code beantwortet haben, damit Leute für Sie abstimmen können? –

+0

e wäre undefiniert, wenn Sie nicht in den Event-Handler einbinden. @ PAULDAWG Ich werde eine bessere Antwort geben. –

2

ich mit der gewählten Antwort nicht einverstanden, weil je nachdem, was Sie eigentlich tun, werden Sie 1 Schritt hinter dem tatsächlich gewählten Wert sein kann.

Wenn Sie einige einfache Löschfunktion hatten dann diese Art von Code funktioniert gut

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

Allerdings, wenn Sie mit dem treeview anfangen zu spielen mehr werden Sie im Bedauern darüber, dass am Ende wie ich.

Best Practice ist an den Ereignishandler

zum Beispiel zu binden

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

wählenFunktion

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'); 
    } 
Verwandte Themen