私は、可変数の子を持つことができるこのツリービューを持っています(一部のノードは最大3世代の子を持つことができ、一部は1つしか持つことができません)
私がやろうとしているのは、ツリービューがロードされたときに特定のノードを展開することです。そして、私には 2 つの問題があります: 1) イベント/コールバックが見つからないため、いつツリービューの準備ができたかがわかります 2) 展開機能が常に機能するとは限りません (説明します)
これは私のツリービューです:
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);
}
データバインドは正常に機能し、コントローラーが呼び出され、すべて問題ありません。そこで私が試したのは、ExpandNode 関数をボタンのクリックに接続することです。関数が呼び出されますが、何も起こりません。しかし、親データソースの変更イベントに接続すると機能します。別の興味深い点は、選択が機能することです。つまり、treeview.expand(...) を treeview.select(...) に置き換えると、クリックで機能します。
だから私の質問は:
1)loadEnd(またはそのようなsmth)にどのイベントを使用する必要があるか-関数をボタンクリックにバインドする必要はありません(それでも問題ありませんが、ロードが終了した方が好みです)-PSで見つけたすべてのものを試しましたchange、requestEnd、success、dataBound などの剣道フォーラムが機能しません。問題のノードに対してプロパティ「expanded」をTRUEに設定してJSONを送信しようとしましたが、矢印が開いているように表示されるように変更するだけで、コントローラーを呼び出して子をロードしません。
2) なぜ ExpandNode が変更イベントにバインドされている場合にのみ機能するのか知っていますか? - 私にとって最も重要な質問です。
3)提案がある場合、またはツリービューの初期化で何か間違ったことをした場合は、教えてください。