Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>The tree tag was as follows,</p> <pre><code> &lt;asp:TreeView ID="tvwRegionCountry" runat="server" ShowCheckBoxes="All" ExpandDepth="0" AfterClientCheck="CheckChildNodes();" PopulateNodesFromClient="true" ShowLines="true" ShowExpandCollapse="true" OnTreeNodeCheckChanged="tvwRegionCountry_TreeNodeCheckChanged" onclick="OnTreeClick(event)"&gt; &lt;/asp:TreeView&gt; </code></pre> <p>Added following JS as mentioned in <a href="https://stackoverflow.com/questions/1437617/asp-net-treeview-checkbox-selection/1437655#1437655">asp.net treeview checkbox selection</a></p> <pre><code>&lt;script language="javascript" type="text/javascript"&gt; function OnTreeClick(evt) { var src = window.event != window.undefined ? window.event.srcElement : evt.target; var isChkBoxClick = (src.tagName.toLowerCase() == "input" &amp;&amp; src.type == "checkbox"); if (isChkBoxClick) { var parentTable = GetParentByTagName("table", src); var nxtSibling = parentTable.nextSibling; if (nxtSibling &amp;&amp; nxtSibling.nodeType == 1)//check if nxt sibling is not null &amp; is an element node { if (nxtSibling.tagName.toLowerCase() == "div") //if node has children { //check or uncheck children at all levels CheckUncheckChildren(parentTable.nextSibling, src.checked); } } //check or uncheck parents at all levels CheckUncheckParents(src, src.checked); } } function CheckUncheckChildren(childContainer, check) { var childChkBoxes = childContainer.getElementsByTagName("input"); var childChkBoxCount = childChkBoxes.length; for (var i = 0; i &lt; childChkBoxCount; i++) { childChkBoxes[i].checked = check; } } function CheckUncheckParents(srcChild, check) { var parentDiv = GetParentByTagName("div", srcChild); var parentNodeTable = parentDiv.previousSibling; if (parentNodeTable) { var checkUncheckSwitch; if (check) //checkbox checked { var isAllSiblingsChecked = AreAllSiblingsChecked(srcChild); if (isAllSiblingsChecked) checkUncheckSwitch = true; else return; //do not need to check parent if any(one or more) child not checked } else //checkbox unchecked { checkUncheckSwitch = false; } var inpElemsInParentTable = parentNodeTable.getElementsByTagName("input"); if (inpElemsInParentTable.length &gt; 0) { var parentNodeChkBox = inpElemsInParentTable[0]; parentNodeChkBox.checked = checkUncheckSwitch; //do the same recursively CheckUncheckParents(parentNodeChkBox, checkUncheckSwitch); } } } function AreAllSiblingsChecked(chkBox) { var parentDiv = GetParentByTagName("div", chkBox); var childCount = parentDiv.childNodes.length; for (var i = 0; i &lt; childCount; i++) { if (parentDiv.childNodes[i].nodeType == 1) //check if the child node is an element node { if (parentDiv.childNodes[i].tagName.toLowerCase() == "table") { var prevChkBox = parentDiv.childNodes[i].getElementsByTagName("input")[0]; //if any of sibling nodes are not checked, return false if (!prevChkBox.checked) { return false; } } } } return true; } //utility function to get the container of an element by tagname function GetParentByTagName(parentTagName, childElementObj) { var parent = childElementObj.parentNode; while (parent.tagName.toLowerCase() != parentTagName.toLowerCase()) { parent = parent.parentNode; } return parent; } &lt;/script&gt; </code></pre> <p>and it worked...</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload