ASP.NET TreeView control linkage parent-child check box check

Abstract: ASP.NET TreeView control linkage parent-child check box check


后置代码: this.TreeView1.Attributes.Add("onclick", "CheckEvent();");

JS code:

function setParentState(objNode) {
   var objParentDiv = WebForm_GetParentByTagName(objNode, "div");
   if (objParentDiv == null || objParentDiv == "undefined")
       return;

   var divID = objParentDiv.getAttribute("ID");
   var prefix = divID.substring(0, divID.indexOf("Nodes"));
   var parentID = prefix + "CheckBox";

   var parentChk = document.getElementById(parentID);
   if (parentChk == null || parentChk == "undefined")
       return;

   if (objNode.checked) {
       parentChk.checked = true;
   }
   else {
       if (isAllChildrenUnChecked(parentChk)) {
           parentChk.checked = false;
       }
   }


   setParentState(parentChk);
}

function setChildState (objNode) // child control state set
{
   var = objNode.getAttribute the nodeID ( "ID"); // chkBox ID
   var prefix nodeID.substring = (0, nodeID.indexOf ( "the CheckBox")); // prefix node
   var childrenDiv = document.getElementById (prefix + " nodes");

   if (childrenDiv == null || childrenDiv == "undefined")
       return;

   var childrenArray = childrenDiv.children; // get all the child controls

   for (var I = 0; I <childrenArray.length; I ++) {
       var = childrenArray Container [I]; // container child controls
       var chk = WebForm_GetElementByTagName (container, " input"); // Check to find control, since only Input control one kind, that is, the CheckBox
       chk.checked = objNode.checked;

       setChildState (chk);

   }

}

function isAllChildrenUnChecked(objChk) {
   var objChkID = objChk.getAttribute("ID");
   var prefix = objChkID.substring(0, objChkID.indexOf("CheckBox"));  //节点的前缀
   var childrenDiv = document.getElementById(prefix + "Nodes");

   if (childrenDiv == null || childrenDiv == "undefined")
       return;

   var childrenArray = childrenDiv.children; // get all the child controls

   for (var I = 0; I <childrenArray.length; I ++) {
       var = childrenArray Container [I]; // container child controls
       var chk = WebForm_GetElementByTagName (container, " input"); // Check to find control, since only one kind Input control is CheckBox

       if (chk.checked)
           return false;

   }

   return true;
}


// trigger event
function CheckEvent () {

   var objNode = event.srcElement;

   if (objNode.tagName != "INPUT" || objNode.type != "checkbox")
       return;

   // set the sub-Chk state
   setChildState (objNode);
   // Set the parent Chk state
   setParentState (objNode);


}

Original: Big Box  ASP.NET TreeView control linkage parent-child check box check


Guess you like

Origin www.cnblogs.com/chinatrump/p/11505559.html