Ich kenne die genaue Route, um einen verschachtelten Knoten in einer Kendo-Baumansicht zu finden. Daher möchte ich alle Knoten entlang dieser Route erweitern, um dorthin zu gelangen. Ich weiß, wie man einen Knoten findet und Kendo diesen Knoten erweitern lässt.So finden Sie einen verschachtelten Knoten in einer Kendo-Baumansicht, in der Daten über eine Web-API 'lazely' geliefert werden
Mein Treeview verwendet eine Web-API für seine Daten und alles funktioniert gut. Das Schema ist wie folgt definiert:
schema: {
model: {
id: "CodeList",
hasChildren: "HasKids"
}
}
Was ich erreichen will, ist der Baum automatisch zu einer verschachtelten Ebene zu erweitern. Angenommen, ich weiß, dass der Pfad zu einem Knoten 'Level1CodeA | Level2CodeA | Level3CodeA' ist, also möchte ich zuerst den Code 'Level1CodeA' finden, den ich ausführen kann.
Ich möchte dann diesen Knoten erweitern (intern ruft er die Daten unter diesem Knoten und es erweitert ok), nach dem ich "Level2CodeA" finden möchte, wiederholen Sie den Vorgang, so auch finden und wählen Sie Level3CodeA.
Wie würde ich darüber gehen? Ich suchte nach einem "AfterExpanded" -Ereignis, das ich verwenden könnte, um den nächsten Such- und Erweiterungsvorgang zu starten, aber ich kann kein Ereignis finden, das ich verwenden kann. Ich versuchte das 'ändern' Ereignis auf meiner Datenquelle, aber das wird viele Male gefeuert und ich kann nicht scheinen, um es auf den richtigen Artikel einzugrenzen.
Vielen Dank.
EDIT: mehr Code
<script id="treeII-template" type="text/kendo-ui-template">
<img id="explorerItemImg" src="#: item.Image #" />
<span id="explorerItemCode">#: item.Code #</span> -
<span id="explorerItemFullName">#: item.FullName #</span>
# if (item.Level < (item.Levels - 1)) { #
[<span id="explorerItemLCount">#: item.LCount #</span>]
# } #
# if (item.HasKids) { #
[<span id="explorerItemPCount">#: item.PCount #</span>]
# } #
</script>
Der Code der HierarchicalDataSource und Zuordnung dieser zur Baum-Ansicht zu erstellen:
// -----------------
// set the datasource for the bottom explorer...
// -----------------
var loadDataForExplorerGroup = function (context, groupid, groupsequence) {
// hang on to this context/groupid
sessionStorage.setItem(context + "_explorer_groupId", groupid);
sessionStorage.setItem(context + "_explorer_groupSequence", groupsequence);
// define the datasource and attach it to the explorer-tree
explorerGroupData = new kendo.data.HierarchicalDataSource({
transport: {
read: {
url: "/api/explorerapi/GetExplorerData?",
data: {
context: "portfolio",
groupid: groupid,
groupsequence: groupsequence,
userid: sessionStorage.getItem("symUserID")
}
}
},
schema: {
model: {
id: "CodeList",
hasChildren: "HasKids"
}
}
});
// simply assign the data source again to the tree
$("#idExplBottomTree").data("kendoTreeView").setDataSource(explorerGroupData);
};
Das sieht brilliant! Vielen Dank dafür - allerdings verwende ich eine Vorlage, um einige Eigenschaften der Objekte zu zeigen, die zurück gekommen sind. Das Finden des Knotens per Text funktioniert also nicht - wie würde ich danach suchen? – Marcel
Hinzugefügt mehr Code: so das Feld 'CodeList' ist die wichtige und wird nicht im Knoten gezeigt ... Es ist einzigartig (weshalb ich es für die ID verwenden kann). – Marcel
Was ist mit der Suche nach der ID? Es ist ziemlich einfach, das Beispiel zu ändern, würde das für Sie arbeiten? – OnaBai