嗨,剑道爱好者。在kendo treeview上我遇到了一个小问题,如果树视图是父节点,我可以扩展它的选定子节点,但是我可以展开它的大父节点,下面是我的小代码:
data.forEach(function (entry) {
var treeView = $("#sysfunc_ktreeview").data('kendoTreeView');
var dataSource = treeView.dataSource;
var dataItem = dataSource.get(entry);
var node = treeView.findByUid(dataItem.uid);
var checkbox = $("input[type='checkbox']", node)[0];
checkbox.click();
});
在本例中,我从数据库中获取数组。但是在这里,如果有子节点被选中,但是id(父节点)不在数组中,我就不能扩展父节点。任何巨大的帮助都将不胜感激。这段小代码来自OnaBai爵士..。谢谢,先生
发布于 2014-10-10 05:47:18
如果要单击id
在data
中的项的所有祖先,请添加以下代码行:
var ancestors = $(node).parents("li[role='treeitem']");
$(">div>span>input", ancestors).click();
这将为每个节点选择当前节点an的所有祖先clicks
input
。
因此,您的代码应该如下所示:
data.forEach(function (entry) {
var treeView = $("#treeview").data('kendoTreeView');
var dataSource = treeView.dataSource;
var dataItem = dataSource.get(entry);
var node = treeView.findByUid(dataItem.uid);
var checkbox = $("input[type='checkbox']", node)[0];
checkbox.click();
var ancestors = $(node).parents("li[role='treeitem']");
$(">div>span>input", ancestors).click();
});
您可以看到它在这里运行:http://dojo.telerik.com/@OnaBai/IRom
发布于 2017-01-20 19:01:13
我想出的最好的解决办法是:
突出显示的代码:
dataBound: function(e){
// expands tree to the selected node
var root = e.node ? $(e.node) : this.element;
// expands only selected checkboxes and parents
this.expand(root.find(".k-item input[type=checkbox]:checked").parents());
},
完整代码:
$(".locationTree").kendoTreeView({
loadOnDemand: false,
checkboxes: true,
select: function(e){
e.preventDefault();
},
dataSource: {
type: "json",
data: processTable(flatData, "id", "parent", 0)
},
dataBound: function(e){
// expands tree to the selected node
var root = e.node ? $(e.node) : this.element;
//this.expand(root.find(".k-item")); // expands all
// expands only selected checkboxes and parents
this.expand(root.find(".k-item input[type=checkbox]:checked").parents());
},
});
发布于 2014-10-15 01:21:43
找到了更好的方法,先生
success: function (data) {
$.each(data, function (index, entry) {
var dataSource = treeView.dataSource;
var dataItem = dataSource.get(entry);
if (!dataItem.hasChildren)
{
dataItem.set("checked", true);
}
var node = treeView.findByUid(dataItem.uid);
parents.push(treeView.dataItem(treeView.parent(node)).id);
if (index + 1 == data.length) {
setTimeout(function () {
self.expandParents(parents, treeView);
}, 100);
}
});
setTimeout(function () {
self.filterChange(treeView, data);
}, 100);
}
https://stackoverflow.com/questions/26290086
复制相似问题