Hi !
I have a RadTreeview to which I have set properties CheckBoxes="true" and OnClientNodeChecking="ClientNodeChecking".
Now, at server-side RadTreeViewMain_NodeDataBound() event I am setting e.Node.Checkable = false; for all nodes.
Then I am checking e.Node.Category from database for each node and if node is of "Option" category, then I am setting e.Node.Checkable = true;
at client-side I have defined a javascript function which is used to uncheck all of the child nodes of the node on unchecking itself.
Surprisingly, it works fine fist time when I check the node and uncheck the same. But after that if I click the same node to make it checked, it shows it is already checked, while in UI it is not checked.
Javascript functions are as below :
Kindly provide me some efficient solution. Awaiting for your valuable response.
Thanks,
Dev
I have a RadTreeview to which I have set properties CheckBoxes="true" and OnClientNodeChecking="ClientNodeChecking".
Now, at server-side RadTreeViewMain_NodeDataBound() event I am setting e.Node.Checkable = false; for all nodes.
Then I am checking e.Node.Category from database for each node and if node is of "Option" category, then I am setting e.Node.Checkable = true;
at client-side I have defined a javascript function which is used to uncheck all of the child nodes of the node on unchecking itself.
Surprisingly, it works fine fist time when I check the node and uncheck the same. But after that if I click the same node to make it checked, it shows it is already checked, while in UI it is not checked.
Javascript functions are as below :
function ClientNodeChecking(sender, eventArgs) { var node = eventArgs.get_node(); var parent = node.get_parent(); var t = node.get_treeView(); var preventCheck = false; var isMultiSelect = parent.get_attributes().getAttribute("multiSelect"); var allNodes = parent.get_allNodes(); var value = node.get_value(); var checkstate = node.get_checkState(); var level = node.get_level(); var errormessage = ""; if (checkstate == 1) { t.trackChanges(); node.uncheck(); getAllChildUnchecked(node); t.commitChanges(); return; } if (level > 2) { var grandParent = parent.get_parent(); var grandParentCategory = grandParent.get_category(); if (grandParentCategory == "Option" && !grandParent.get_checked()) { // you can add simple alert message here.. //errormessage = "The parent node is not checked."; //openDialogPreventChecked(errormessage); eventArgs.set_cancel(true); return; } } if (allNodes.length > 0) { for (var i = 0; i < allNodes.length; i++) { var childnode = allNodes[i]; var childvalue = childnode.get_value(); if (childnode.get_checked() && isMultiSelect == "false" && value != childvalue) { preventCheck = true; break; } } } if (preventCheck) { // you can add simple alert message here.. eventArgs.set_cancel(true); //errormessage = "This is not multi-select type of question"; //openDialogPreventChecked(errormessage); }}function getAllChildUnchecked(node) { var childNodes = node.get_allNodes(); if (childNodes.length > 0) { for (var i = 0; i < childNodes.length; i++) { var childnode = childNodes[i]; childnode.uncheck(); getAllChildUnchecked(childnode); } }}Kindly provide me some efficient solution. Awaiting for your valuable response.
Thanks,
Dev