asp.net2.0 TreeView

<script language="javascript" type="text/javascript">
var OnNodeChecked;
var OnInit;
function client_OnTreeNodeChecked()
{
    
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;
        }

        
       setChildCheck(element,checkedState);
       setParentCheck(element,checkedState);
       
if (OnInit)
        
{
            OnInit();
        }

       
var tree = document.getElementById("TreeView1");
       FindCheckedFromNode(tree)
    }

}

function FindCheckedFromNode(node) 
{
    
var element = node;
    
if (element == null)
        
return;
    
var a;
    
var childTables = element.getElementsByTagName("TABLE");
    
for (var tableIndex = 0; tableIndex < childTables.length; tableIndex++)
    
{
         
var checkboxIndex = childTables[tableIndex].rows[0].cells.length - 1;
         
var cell = childTables[tableIndex].rows[0].cells[checkboxIndex];
         
var checkboxes = cell.getElementsByTagName("INPUT");
         
if (checkboxes.length == 1 && checkboxes[0].checked)
         
{
            a 
= a + childTables[tableIndex].rows[0].innerText;
            AddChecked(childTables[tableIndex]);
         }

    }

}

function AddChecked(table) 
{
    
if (OnNodeChecked)
        OnNodeChecked(table);
}

function setChildCheck(table,checkedState)
{
    
var element = table.nextSibling;
    
if (element == null// If no childrens than exit
        return;
    
    
var childTables = element.getElementsByTagName("TABLE");
    
for (var tableIndex = 0; tableIndex < childTables.length; tableIndex++)
    
{
        checkTable(childTables[tableIndex], checkedState);
    }

}

function setParentCheck(table,checkedState)
{
   
if (table == null || table.rows[0].cells.length == 2// This is the root
    {
        
return;
    }

    
var parentTable = table.parentElement.previousSibling;
    
if (checkedState)
    
{
         checkTable(parentTable, checkedState);
    }

    
else
    
{
        checkBrother(parentTable,checkedState)
    }

    setParentCheck(parentTable,checkedState);
    
}


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;
    }

}

function checkBrother(parentTable,checkedState)
{
    
var bChecked = true;
    
var element = parentTable.nextSibling;
    
if (element == null// If no childrens than exit
        return;
    
    
var childTables = element.getElementsByTagName("TABLE");
    
for (var tableIndex = 0; tableIndex < childTables.length; tableIndex++)
    
{
        
var checkboxIndex = childTables[tableIndex].rows[0].cells.length - 1;
        
var cell = childTables[tableIndex].rows[0].cells[checkboxIndex];
        
var checkboxes = cell.getElementsByTagName("INPUT");
        
if (checkboxes.length == 1 && checkboxes[0].checked)
        
{
            bChecked 
= false;
            
break;
        }

    }

    
if(bChecked)
    
{
        checkTable(parentTable,checkedState);
    }

    
else
    
{
        setParentCheck(parentTable,
!checkedState);
    }

}
;

//前台调用
var value='';
OnNodeChecked 
= fnDoNodeChecked;
OnInit 
= fnDoInit;
function fnDoInit()
{
    value 
= "";
}
    

function fnDoNodeChecked(table)
{    
    value 
=  value + table.rows[0].innerText;
    alert(value);
}


    
</script>
posted on 2006-06-27 13:02  老狐狸  阅读(346)  评论(0)    收藏  举报