2013-04-12 74 views
1

我有一个双级Kendo UI树视图与父节点和子节点。 当我检查父节点时,会自动检查所有子节点(包括父节点)。kendo treeview复选框 - 父节点检查 - 每个复选框更改事件

现在我想发送一个事件与当前树选择状态。 问题是当我尝试在dataSource.change方法,因为它分别触发每个复选框选择(1个父节点+ 3个子节点= 4个变化事件)。这是代码的样子:

treeView.data("kendoTreeView").dataSource.bind("change", function() { 
    alert('event fired!'); 
}); 

我创建了一个工作示例here

是否有其他事件附加到只生一个事件触发的所有复选框被更新后? 或者,也许有办法将所有这些“变化”事件分组,然后只发一个?

回答

1

我用这个解决方案结束:

tree.data("kendoTreeView").dataSource.bind("change", function() { 
     treeView = tree.data("kendoTreeView"); 
     checkedNodes = []; 
    checkedNodeIds(treeView.dataSource.view(), checkedNodes); 
    if (!timeoutSet) { 
     setTimeout(fireCheckboxChangeOnce, 50);//fires only one event when parent checkbox checks all the children 
     timeoutSet = true; 
    } 
}); 

只有第一个事件来创建一个函数调用延迟(使用的setTimeout())。 所有剩余的“更改”事件仅修改checkedNodes参数。

fireCheckboxChangeOnce函数还清除timeoutSet标志。

+0

谢谢 - 这个工程,但理想情况下,我们应该寻找一个没有超时的解决方案 – Abhi