[英]Disable Check-boxes recursively in RAD tree view
I am trying to select all the check-boxes of the children in a Telerik RAD Tree view when the user checks a parent node and disable the check-boxes of all child nodes. 当用户检查父节点并禁用所有子节点的复选框时,我试图在Telerik RAD树视图中选择所有子复选框。 I have a recursive function that is successfully checking the boxes, but i'm not having much luck in disabling all child check-boxes.
我有一个递归功能,可以成功选中这些复选框,但是禁用所有子复选框都没有太大的运气。 Here is my code:
这是我的代码:
<script type="text/javascript" language="JavaScript">
function UpdateChildrenRecursively(nodes, checked)
{
var i;
for (i=0; i<nodes.get_count(); i++)
{
if (checked)
{
nodes.getNode(i).check();
}
else
{
nodes.getNode(i).set_checked(false);
}
// if the node has children, call the recursive function
// then disable the checkboxes for each child
if (nodes.getNode(i).get_nodes().get_count()> 0)
{
UpdateChildrenRecursively(nodes.getNode(i).get_nodes(), checked);
nodes.getNode(i).get_nodes().disabled = true;
}
}
}
function clientNodeChecked(sender, eventArgs)
{
var childNodes = eventArgs.get_node().get_nodes();
var isChecked = eventArgs.get_node().get_checked();
UpdateChildrenRecursively(childNodes, isChecked);
}
</script>
Here's what the Telerik RAD Tree looks like: 这是Telerik RAD树的样子:
<telerik:RadTreeView ID="RadTreeView2" OnClientNodeChecked="clientNodeChecked" CheckBoxes="true"
runat="server" DataSourceID="XmlDataSource1">
<DataBindings>
<telerik:RadTreeNodeBinding DataMember="Node" TextField="Text" ExpandedField="Expanded" />
</DataBindings>
</telerik:RadTreeView>
<asp:XmlDataSource runat="server" ID="XmlDataSource1" DataFile="Tree.xml" XPath="/Tree/Node" />
function CheckedIt(sender, eventArgs) {
var childNodes = eventArgs.get_node().get_nodes();
var isChecked = eventArgs.get_node().get_checked();
var node = eventArgs.get_node();
if (!node.get_checked()) {
while (node.get_parent().set_checked != null) {
node.get_parent().set_checked(false);
node = node.get_parent();
}
}
UpdateAllChildren(childNodes, isChecked);
}
function UpdateAllChildren(nodes, checked) {
var i;
for (i = 0; i < nodes.get_count(); i++) {
if (checked) {
nodes.getNode(i).check();
}
else {
nodes.getNode(i).set_checked(false);
}
if (nodes.getNode(i).get_nodes().get_count() > 0) {
UpdateAllChildren(nodes.getNode(i).get_nodes(), checked);
}
}
}
Call this function on 'OnClientNodeChecked' event of RadTreeView like OnClientNodeChecked="CheckedIt". 在RadTreeView的“ OnClientNodeChecked”事件上调用此函数,例如OnClientNodeChecked =“ CheckedIt”。
您应该使用nodes.getNode(i).set_enabled(false)
禁用节点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.