Kendo Arborescence, Développez Le Nœud

J'ai ce treeview qui peut avoir un nombre variable d'enfants (certains nœuds peuvent avoir jusqu'à 3 générations d'enfants, certains peuvent avoir un seul etc)

Ce que je suis en train de faire est de développer un certain nœud lorsque le treeview est chargé. Et j'ai 2 problèmes:
1) je ne trouve pas d'événement/de rappel pour que je sache quand le treeview est prêt
2) La fonction de développement ne fonctionne pas toujours ( je vais vous expliquer )

C'est mon treeview:

function InitializeTreeview() {

var Children_Merchants = {
    transport: {
        read: {
            url: function (options) {
                return kendo.format(websiteRootUrl + '/Merchants/Merchants/?hasParents={0}',   hasParent);
            }
        }
    },
    schema: {
        model: {
             model: {
            id: "ID",
            hasChildren: true,
            children: Children_Merchants
        }
        }
    }
};

var Brandowners = new kendo.data.HierarchicalDataSource({
    transport: {
        read: {
            url: kendo.format(websiteRootUrl + '/Merchants/GetBrandowners?databaseID={0}',       selectedDatabaseID)
      }
    },
    //change: ExpandNode, - if I call expand node like this, it works.
    schema: {
        model: {
            id: "ID",
            hasChildren: true,
            children: Children_Merchants
        }
    }
});


$('#treeview').kendoTreeView({
    dataSource: Brandowners,
    animation: {
        collapse: {
            duration: 200,
            effects: "fadeOut"
        },
        expand: {
            duration: 200,
            effects: "fadeIn"
        }

    },
    dataTextField: "Name",
    complete: function () {  alert('ok'); },
    //dataBound    : ExpandNode,
    select: OnSelect,
    expand: CheckIfHasParent
}).data('kendoTreeView');
}

function ExpandNode() {
    var treeview;
    treeview = $("#treeview").data("kendoTreeView");
    var nodeToExpand = treeview.findByText('Adam'); //dummy txt, will have from parameter
    treeview.expand(nodeToExpand);
}

La databind fonctionne ok, mon contrôleurs appelés, tout va bien.
Donc ce que j'ai essayé de brancher le ExpandNode fonction à un clic d'un bouton. La fonction est appelée, mais rien ne se passe. MAIS si je le raccorder à l'événement de changement des parents de la source de données, il fonctionne. Une autre chose intéressante est que la sélectionner fonctionne donc si je remplace le treeview.développer(...) avec treeview.sélectionnez(...), il fonctionne sur le clic.

Donc mes questions sont:

1) Quels cas dois-je utiliser pour loadEnd ( ou qch comme ça ) - je ne vais pas lier la fonction de bouton de la souris (c'est toujours ok, mais je préférez sur la charge terminée) - P. S. j'ai essayé toutes celles que j'ai trouvé sur le kendo forums,tels que: le changement, requestEnd, succès, lié aux données et ils ne travaillent pas. J'ai essayé d'envoyer le JSON avec la propriété "élargi" est défini à TRUE, pour le nœud en question, mais qui ne modifie que la flèche pour montrer comme il est ouvert, mais il n'a pas d'appeler le contrôleur et la charge les enfants.

2) savez-vous pourquoi ExpandNode ne fonctionne que lorsque liées à l'événement de changement? - la question la plus importante pour moi.

3) Si vous avez des suggestions, ou ai-je fait quelque chose de mal dans la initialiation de l'arborescence, s'il vous plaît dites-moi.

  • J'ai essayé déjà, il change seulement de la flèche l'élargissement de la mode
  • Faites-vous de la charge sur la demande ou le chargement de tous les arbres dans un seul transfert?
  • J'ai essayé de réglage loadOnDemmand pour faux et envoyer le expand = true. et puis BOOM. certains 2-3 nœuds s'est développée avec des enfants et de tous. mais j'ai un total de 100+ parents + les générations, c'annonces jusqu'à environ 40000 nœuds. Donc, il s'est écrasé. Je suppose que ce serait une solution, mais il n'est pas bon pour moi
  • De prendre un regard plus profond dans votre code... Pourquoi Children_Merchants n'est pas un HierarchicalDataSource?
  • J'ai eu un exemple dans le même projet, alors j'ai regardé pour la source de données et treeview init. Honnêtement, je n'ai pas vraiment l'obtenir comment il le fait. il va juste recursevly. - J'ai été étonné quand découvert que j'ai plus que 2 niveaux 🙂 en attendant, je vois que: si je étendre le 'Adam' nœud ciblées dans le ExpandNode(), fermez-la, puis cliquez sur le bouton, il se développe avec les enfants. Donc je suppose que les enfants doivent être chargées par le temps "teeview.développer(...)" est exécuté, seriez-vous d'accord?
  • Oui! ;ost problèmes que j'ai vu en DONC en ce qui concerne Kendo UI (non évident) sont sur le point de synchronisation sur comment/quand les choses se passent. Le fait que vous créez un arbre ne signifie pas que est rempli immédiatement, cela signifie qu'il émet une lecture pour les serveurs, lorsque les données sont reçues Kendo UI obtient les résultats, permet de faire quelques modifications dans les données, puis il commence à peupler le HTML. Donc, si vous essayez de développer quelque chose avant qu'il y est des données, ou avant le HTML est généré: rien ne se passe. J'ai également constaté que, parfois, les docs pour les événements ne sont pas claires ou pas uniforme d'un widget à un autre.

InformationsquelleAutor Vlad | 2013-07-08