Question

Cette question est un miroir de ce post sur Telerik du Forum que j'ai posté hier.

J'ai un TreeView avec HierarchicalDataSource et ma question est simple:Puis-je accéder à la dataItem dans le transport.la fonction de lecture?

Considérez par exemple ce code:

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

Je veux accéder à la dataItem les propriétés de l'actuelle expansion nœud à l'intérieur de la fonction de lecture.Est-ce possible?

J'ai essayé de nombreuses façons, mais le champ d'application à l'intérieur de cette fonction me donne accès à rien en dehors d'elle.

Mise à JOUR:

@OnaBai suggestion travaillé avec - dans mon cas - Value bien, étant donné le modèle suivant:

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

Mais je veux être en mesure d'accéder à plus que juste Id mais l'ensemble de la dataItem.J'ai essayé d'ajouter dataItem, ou demande - propriétés du modèle, mais il n'a pas travaillé:

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

ParentId vient de la demande et son accessibles dans dataItem, mais pas dans options à l'intérieur de read fonction.Il y a une autre façon de le faire ?

Mise à JOUR 2:

Une délicate façon de faire ceci peut être réalisé en fixant le modèle de l'id de uid:

{
    id: "uid"
}

La fonction recevra l'uid et puis vous pouvez l'obtenir à partir de la source de données avec, par exemple, dataSource.getByUid().

Était-ce utile?

La solution

En supposant que Id l' id définis dans votre modèle, vous devez faire:

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

Voir un exemple ici : http://jsfiddle.net/OnaBai/mE4zZ/2/

MODIFIER:Si vous avez besoin d'accéder à l'intégralité du modèle alors connu sous le nom id vous pouvez utiliser get la méthode de la source de données pour l'obtention de l'élément.

Exemple:

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

Modifié JSFiddle ici http://jsfiddle.net/OnaBai/mE4zZ/3/

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top