Frage

Diese Frage ist ein Spiegelbild von dieser Beitrag im Telerik-Forum, das ich gestern gepostet habe.

Ich habe eine TreeView mit HierarchicalDataSource und meine Frage ist einfach:Kann ich in der Funktion transport.read auf das aktuelle dataItem zugreifen?

Betrachten Sie zum Beispiel diesen Code:

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

Ich möchte innerhalb der Lesefunktion auf die Eigenschaften des dataItem des aktuellen expandierenden Knotens zugreifen.Ist das möglich?

Ich habe viele Möglichkeiten ausprobiert, aber der Bereich innerhalb dieser Funktion ermöglicht mir den Zugriff auf nichts außerhalb davon.

AKTUALISIEREN:

@OnaBai-Vorschlag hat funktioniert – in meinem Fall – Value Eigenschaft, gegeben das folgende Modell:

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

Aber ich möchte einfach auf mehr zugreifen können Id aber das Ganze dataItem.Ich habe versucht, die DataItem- oder Request-Eigenschaften zum Modell hinzuzufügen, aber es hat nicht funktioniert:

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

ParentId kommt aus der Anfrage und ist zugänglich in dataItem, aber nicht drin options innen read Funktion.Gibt es eine andere Möglichkeit, das zu tun?

UPDATE 2:

Ein kniffliger Weg, dies zu erreichen, kann erreicht werden, indem die ID des Modells auf festgelegt wird uid:

{
    id: "uid"
}

Die Funktion erhält die UID und Sie können sie dann von dataSource abrufen, z. B. dataSource.getByUid().

War es hilfreich?

Lösung

Vorausgesetzt, dass Id Die id In Ihrem Modell definiert, sollten Sie Folgendes tun:

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

Sehen Sie hier ein Beispiel: http://jsfiddle.net/OnaBai/mE4zZ/2/

BEARBEITEN:Wenn Sie auf das vollständige Modell zugreifen müssen, kennen Sie das id Sie können verwenden get Methode für die DataSource zum Abrufen des Elements.

Beispiel:

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

JSFiddle hier geändert http://jsfiddle.net/OnaBai/mE4zZ/3/

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top