KendoUI - 选择时禁用某些节点
KendoUI - disable certain nodes when selecting
我有 2 个 Kendo Treeview; 1 个没有复选框,另外 1 个有复选框 like example here。
可以说我想禁用第二个树视图上的某些节点,当我 select 第一个节点上的某些节点时带有复选框的树视图(例如,当我 select 时我想禁用不是家具的节点家具)。该过程有点像 example here,但没有按钮,仅从 selecting 第一个树视图上的节点开始。我该如何实现?
TreeList 有一个名为 select
的事件,它可以为您处理该行为:
select: function(e) {
let tv = $("#treeview-right").data("kendoTreeView"), // Gets the 2dn treeview reference
text = e.sender.dataItem(e.node).text; // Gets the 1st treeview selected text
// Iterates over the 2nd treeview items
tv.items().toArray().forEach(item => {
let dataItem = tv.dataItem(item), // Get the item related dataItem
disabled = (dataItem.type !== text); // Figures out if the current item is of selected type
// Gets the current item's checkbox
$(item).find('input[type="checkbox"]')
.prop('checked', false) // Uncheck it by default
.prop('disabled', disabled); // Disable/enable based on above condition
});
}
备选方案:您可以像下面那样过滤第二个 TreeView:
select: function(e) {
let tv = $("#treeview-right").data("kendoTreeView"),
text = e.sender.dataItem(e.node).text;
tv.dataSource.filter({ field: "type", operator: "eq", value: text });
}
我有 2 个 Kendo Treeview; 1 个没有复选框,另外 1 个有复选框 like example here。 可以说我想禁用第二个树视图上的某些节点,当我 select 第一个节点上的某些节点时带有复选框的树视图(例如,当我 select 时我想禁用不是家具的节点家具)。该过程有点像 example here,但没有按钮,仅从 selecting 第一个树视图上的节点开始。我该如何实现?
TreeList 有一个名为 select
的事件,它可以为您处理该行为:
select: function(e) {
let tv = $("#treeview-right").data("kendoTreeView"), // Gets the 2dn treeview reference
text = e.sender.dataItem(e.node).text; // Gets the 1st treeview selected text
// Iterates over the 2nd treeview items
tv.items().toArray().forEach(item => {
let dataItem = tv.dataItem(item), // Get the item related dataItem
disabled = (dataItem.type !== text); // Figures out if the current item is of selected type
// Gets the current item's checkbox
$(item).find('input[type="checkbox"]')
.prop('checked', false) // Uncheck it by default
.prop('disabled', disabled); // Disable/enable based on above condition
});
}
备选方案:您可以像下面那样过滤第二个 TreeView:
select: function(e) {
let tv = $("#treeview-right").data("kendoTreeView"),
text = e.sender.dataItem(e.node).text;
tv.dataSource.filter({ field: "type", operator: "eq", value: text });
}