Kendo Treeview-Knoten Erweitern

Habe ich dieses treeview-wich kann eine variable Anzahl der Kinder (einige Knoten kann bis zu 3 Generationen von Kindern, einige haben nur einer etc)

Was ich versuche zu tun ist, erweitern Sie einen bestimmten Knoten, wenn das treeview geladen. Und ich habe 2 Probleme:
1) ich kann nicht finden, ein event/callback, damit ich weiß, Wann die Strukturansicht bereit ist
2) Die expand-Funktion nicht immer funktioniert ( ich werde später erklären )

Dies ist mein 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);
}

Die databind-Methode funktioniert ok, mein Controller aufgerufen werden, ist alles in Ordnung.
Also, was ich versucht habe, ist hook up die ExpandNode-Funktion zu einem Klick auf eine Schaltfläche. Die Funktion wird aufgerufen, aber es passiert nichts. ABER wenn ich es Haken bis zu dem change-Ereignis des Eltern-datasource, es funktioniert. Eine weitere interessante Sache ist, dass die select funktioniert so, wenn ich ersetzen treeview.erweitern Sie(...) mit treeview.wählen Sie(...), es funktioniert auf die klicken Sie auf.

Also meine Fragen sind:

1) welches Ereignis sollte ich verwenden für loadEnd ( oder etwas ähnliches ) - so dass ich nicht haben, binden Sie die Funktion auf Taste klicken (es ist immer noch ok, aber ich lieber auf laden beendet) - P. S. ich habe versucht, alle diejenigen, die ich fand, auf die kendo-Foren,wie: änderung, requestEnd, Erfolg, Datenbindung und Sie funktionieren nicht. Ich habe versucht, per JSON mit der Eigenschaft "erweitert" auf TRUE gesetzt, werden für die Knoten in Frage, aber das ändert lediglich den Pfeil, um zu zeigen, wie Sie geöffnet wird, aber es funktioniert nicht rufen Sie die controller und laden die Kinder.

2) wissen Sie, warum ExpandNode funktioniert nur, wenn gebunden an das change-Ereignis? - die wichtigste Frage für mich.

3) Wenn Sie Vorschläge haben, oder habe ich etwas falsch gemacht in der initialiation der treeview, bitte sagen Sie mir.

Hab ich schon versucht, es ändert sich nur der Pfeil zu erweiterten Modus
Machst du den laden auf Nachfrage oder laden Sie die Struktur in einem einzigen transfer?
Ich habe versucht, loadOnDemmand auf false und senden Sie den expand = true. und dann BOOM. etwa 2-3 Knoten bekam, erweitert mit Kindern und alle. aber ich habe insgesamt 100+ Eltern + den Generationen, die es anzeigen bis zu über 40000 Knoten. So krachte es. Ich denke, das wäre eine Lösung, aber es ist nicht gut für mich
Nehmen Sie einen tieferen Blick in den code... Warum Children_Merchants ist nicht ein HierarchicalDataSource?
Ich hatte ein Beispiel im selben Projekt, so sah ich es für die datasource-und treeview-init. Ehrlich gesagt, ich weiß nicht wirklich, wie er es tut. es geht nur recursevly. - Ich war erstaunt, als fand heraus, dass ich mehr als 2 Ebenen 🙂 in der Zwischenzeit sehe ich, dass: wenn ich das erweitern der 'Adam' - Knoten - gezielt in der ExpandNode(), schließen Sie es, und klicken Sie dann auf die Schaltfläche, es wird erweitert mit den Kindern. Also ich denke, die Kinder müssen geladen werden, indem die Zeit "teeview.erweitern, (...)" ausgeführt wird, würden Sie dem Zustimmen?

InformationsquelleAutor Vlad | 2013-07-08

Schreibe einen Kommentar