Domanda

Questa domanda è uno specchio da Questo post Sul forum di Telerik che ho pubblicato ieri.

Ho una visione TreeView con HierarchicalDataSource e la mia domanda è semplice: posso accedere all'attuale DataItaIDem nella funzione Transport.read?

Ad esempio, considera questo codice:

new kendo.data.HierarchicalDataSource({
    transport: {
        read: function(options) {
            // Here i'll prepare my url to be called
            return "my/controller/" + dataItem.Id;
        }
    }
});
.

Voglio accedere alle proprietà di DataItaIDEM del nodo di espansione corrente all'interno della funzione di lettura. È possibile?

Ho provato molti modi ma la portata all'interno di quella funzione mi dà accesso di niente al di fuori di esso.

Aggiornamento :

@onabai Suggerimento ha lavorato con - nel mio caso - proprietà Value, dato il seguente modello:

{
    id: "Value",
    hasChildren: "HasChildren"
}; 
.

Ma voglio essere in grado di accedere a più che solo Id ma l'intero dataItem. Ho provato ad aggiungere 'DataItaIDEM o richiesta - Proprietà al modello ma non funziona:

{
    id: "Value",
    hasChildren: "HasChildren",
    fields: {
        ParentId: { type: "string" }
    }
}; 
.

ParentId proviene dal resquest e dal suo accessibile in dataItem, ma non in options all'interno della funzione read. C'è un altro modo per farlo?

Aggiorna 2 :

Un modo difficile per farlo può essere ottenuto impostando l'ID del modello a uid:

{
    id: "uid"
}
.

La funzione riceverà l'UID e quindi è possibile ottenerlo da DataSource con, ad es. dataSource.getByUid().

È stato utile?

Soluzione

Supponendo che Id The id definito nel modello, dovresti fare:

new kendo.data.HierarchicalDataSource({
    transport: {
        read: function(options) {
            return "my/controller/" + options.Id;
        }
    }
});
.

Vedi un esempio qui: http://jsfiddle.net/onabai/me4zz/2/

Modifica : Se è necessario accedere al modello completo, quindi è noto il id è possibile utilizzare il metodo get su DATASource per ottenere l'oggetto.

Esempio:

var ds = new kendo.data.HierarchicalDataSource({
    transport: {
        read: function(options) {
            if (options.Id) {
                var item = ds.get(options.Id);
                // Do whatever else you need with Item
            }
            return "my/controller/" + options.Id;
        }
    }
});
.

Modificato Jsfiddle qui http://jsfiddle.net/onabai/meology/3/

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top