Accedi a DataItaIDEM Inside Transport.Read Function
-
21-12-2019 - |
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()
.
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/