Rocho.J

人脑是不可靠的, 随时记录感悟并且经常重复!

 

TreeView树中级联选择checkBox

需要在TreeView中添加showcheckBox属性和showlines属性

/****************************************************/

<script type="text/javascript" language="javascript">
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)//设定子控件状态
{
    var nodeID = objNode.getAttribute("ID");   //chkBox ID 
    var prefix = nodeID.substring(0, nodeID.indexOf("CheckBox"));  //节点的前缀
    var childrenDiv = document.getElementById(prefix + "Nodes");

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

    var childrenArray = childrenDiv.children; //取得所有子控件

    for (var i = 0; i < childrenArray.length; i++) {
        var container = childrenArray[i]; //子控件的容器
        var chk = WebForm_GetElementByTagName(container, "input"); //查找Check控件,由于只有一个种Input控件,就是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; //取得所有子控件

    for (var i = 0; i < childrenArray.length; i++) {
        var container = childrenArray[i]; //子控件的容器
        var chk = WebForm_GetElementByTagName(container, "input"); //查找Check控件,由于只有一个种Input控件,就是CheckBox

        if (chk.checked)
            return false;

    }

    return true;
}


//触发事件
function HandleCheckEvent() {

    var objNode = event.srcElement;

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

    //设定子Chk状态
    setChildState(objNode);
    //设定父Chk状态
    setParentState(objNode);


}
</script>

posted on 2010-08-22 13:50  RJ  阅读(255)  评论(0)    收藏  举报

导航