无刷新联动树控件treeview

<script language="javascript" type="text/javascript">
    //无刷新
        function HandleCheckbox() {
            var element = event.srcElement;
            if (element.tagName == "INPUT" && element.type == "checkbox") {
                var checkedState = element.checked;
                while (element.tagName != "TABLE") // Get wrapping table               
                {
                    element = element.parentElement;
                }
                var parentElement = element;

                if (checkedState) {
                    CheckParents(element);
                }

                element = element.nextSibling; //element.tagName = DIV 

                if (element != null) // If no childrens then exit 
                {
                    var childTables = element.getElementsByTagName("TABLE");

                    for (var tableIndex = 0; tableIndex < childTables.length; tableIndex++) {
                        CheckTable(childTables[tableIndex], checkedState);
                    }
                }
                if (checkedState == false) {
                    UnCheckParents(parentElement);
                }

            }
        }

        // Uncheck the parents of the given table, Can remove the recurse (redundant) 
        function CheckParents(table) {
            if (table == null || table.rows[0].cells.length == 2) // This is the root 
            {
                return;
            }
            var parentTable = table.parentElement.previousSibling;
            CheckTable(parentTable, true);
            CheckParents(parentTable);
        }

        // Check the parents of the given table, Can remove the recurse (redundant) 
        function UnCheckParents(table) {

            if (table == null || table.rows[0].cells.length == 2) // This is the root  
            {
                return;
            }
            var parentTable = table.parentElement.previousSibling;

            var checkedCount = GetCheckedCount(table.parentElement);
            if (checkedCount == 0) {
                CheckTable(parentTable, false);
            }
            UnCheckParents(parentTable);
        }

        // Handle the set of checkbox checked state                                    
        function CheckTable(table, checked) {
            var checkboxIndex = table.rows[0].cells.length - 1;
            var cell = table.rows[0].cells[checkboxIndex];
            var checkboxes = cell.getElementsByTagName("INPUT");
            if (checkboxes.length == 1) {
                checkboxes[0].checked = checked;
            }

        }
        //Get checked children count
        function GetCheckedCount(table) {
            var checkedCount = 0;
            var element = table.nextSibling;
            var childTable = table.getElementsByTagName("TABLE");

            for (var tableIndex = 0; tableIndex < childTable.length; tableIndex++) {
                var childTables = childTable[tableIndex];
                var checkboxIndex = childTables.rows[0].cells.length - 1;
                var cell = childTables.rows[0].cells[checkboxIndex];
                var checkboxes = cell.getElementsByTagName("INPUT");
                if (checkboxes.length == 1 && checkboxes[0].checked == true) {
                    checkedCount++;
                }
            }
            return checkedCount;
        }                                                                            
 </script>

 

posted @ 2013-12-03 17:47  知不知道  阅读(158)  评论(0编辑  收藏  举报