我有这个树视图,它可以有可变数量的孩子(一些节点最多可以有 3 代孩子,有些可能只有一个等)
我要做的是在加载树视图时展开某个节点。我有 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.select(...) 替换 treeview.expand(...),它在点击时有效。
所以我的问题是:
1)我应该为loadEnd(或类似的东西)使用什么事件 - 所以我不必将函数绑定到按钮点击(它仍然可以,但我更喜欢加载结束) - PS我尝试了所有我找到的剑道论坛,如:change、requestEnd、success、dataBound,它们不起作用。我尝试为有问题的节点发送属性“扩展”设置为 TRUE 的 JSON,但这只会修改箭头以显示它已打开,但它不会调用控制器并加载子节点。
2) 你知道为什么 ExpandNode 只在绑定到 change 事件时才有效吗?- 对我来说最重要的问题。
3)如果您有建议,或者我在树视图的初始化中做错了什么,请告诉我。