Loading

asp.net treeview 级联选择

<script type="text/javascript">


        //当前table的父table所在的checkbox
        function GetParentCheckBox(node) {

            while (node.tagName != "TABLE") {

                node = node.parentNode;

            }

            while (node.tagName != "DIV") {

                node = node.parentNode;

            }

            var siblingNode = node.previousSibling;
            while (siblingNode != null && siblingNode.tagName != "TABLE") {
                siblingNode = siblingNode.previousSibling;
            }

            if (siblingNode == null) {
                return null;
            }

            var checkBox = siblingNode.getElementsByTagName('INPUT')[0];
            return checkBox;

        }

        function GetCurrentLevelCheckBoxes(node) {

            var tables = new Array();

            while (node.tagName != "TABLE") {
                node = node.parentNode;
            }

            tables[0] = node; //当前选择的checkbox
            var siblingNode = node.nextSibling;
            var index = 0;

            while (siblingNode != null) {
                if (siblingNode.tagName == "TABLE") {
                    tables[++index] = siblingNode;
                }

                siblingNode = siblingNode.nextSibling
            }

            siblingNode = node.previousSibling
            while (siblingNode != null) {
                if (siblingNode.tagName == "TABLE") {
                    tables[++index] = siblingNode;
                }

                siblingNode = siblingNode.previousSibling;
            }

            var checkBoxs = new Array();
            var checkBox;
            for (var i = 0; i < tables.length; i++) {
                checkBox = tables[i].getElementsByTagName('INPUT');
                for (var j = 0; j < checkBox.length; j++) {
                    if (checkBox[j].type == 'checkbox') {
                        checkBoxs[i] = checkBox[j];
                    }
                }

            }

            return checkBoxs;
        }

        function CheckParentNode(ele) {

            var currentLevelCheckBoxes = GetCurrentLevelCheckBoxes(ele);

            var parentCheckBox = GetParentCheckBox(ele);

            if (parentCheckBox != null) {
                var checkCount = 0;
                for (var i = 0; i < currentLevelCheckBoxes.length; i++) {
                    if (currentLevelCheckBoxes[i].checked) {
                        checkCount++;
                    }
                }
                if (currentLevelCheckBoxes.length == checkCount) {
                    parentCheckBox.checked = true;
                }
                else {
                    parentCheckBox.checked = false;
                }

                CheckParentNode(parentCheckBox);
            }
        }

        function OnTreeNodeChecked() {
            var ele = event.srcElement;
            if (ele.type == 'checkbox') {
                var childrenDivID = ele.id.replace('CheckBox', 'Nodes');
                var div = document.getElementById(childrenDivID);

                if (div != null) {
                    var checkBoxs = div.getElementsByTagName('INPUT');
                    for (var i = 0; i < checkBoxs.length; i++) {
                        if (checkBoxs[i].type == 'checkbox')
                            checkBoxs[i].checked = ele.checked;
                    }
                }

                CheckParentNode(ele);
            }
        }
    </script>
<asp:TreeView ID="tvCategoryProcess" runat="server" OnClick="OnTreeNodeChecked()">
                </asp:TreeView>
posted @ 2010-10-30 14:04  .net's  阅读(569)  评论(0)    收藏  举报