2013-08-30 6 views
5

Ho una vista ad albero del kendo con un nodo con {id, value}. e voglio ottenere l'id e il valore del nodo selezionato quando clicco su un pulsante.Leggi i valori del nodo selezionato dalla vista ad albero di kendo?

Come posso ottenerlo? C'è qualche funzione incorporata lì per ottenerlo?

Ecco il mio codice di esempio:

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

risposta

19

utilizzare il metodo .select(). Assicurati di guardare anche agli altri metodi disponibili.

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, grazie per la risposta. Ma qui sta dando null per item.text e item.id sta dando qualche Guid. Mi aspetto il testo esatto e il valore che è vincolato attraverso l'origine dati. – jestges

+0

I miei campi testo/valore nell'esempio non corrispondevano esattamente al tuo. Vedi il mio aggiornamento e il violino aggiornato – ryan

+0

Hey Ryan, non so cosa sto sbagliando. Ho seguito allo stesso modo, ma sta dando tv.dataItem non è un errore di funzione. – 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 non è definito" – PAULDAWG

+0

Puoi modificare il tuo post e aggiungere qualche descrizione perché hai risposto con questo codice in modo che le persone possano votare per te? –

+0

e non è definito se non si annulla nel gestore eventi. @ PAULDAWG Fornirò una risposta migliore. –

2

Non sono d'accordo con la risposta selezionata perché a seconda di quello che effettivamente fanno, si può essere 1 passo dietro il valore attualmente selezionato.

Se aveste qualche semplice funzione di cancellazione allora questo tipo di codice funziona bene

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

Tuttavia, una volta che si inizia a giocare con la vista ad albero più si finirà per rimpiangere che come ho.

migliore consiste nel legare al gestore di eventi

esempio

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

selezionarefunzione

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