在Treeview控件中加入onclick="treeVIEwCheck(event) ;"
下面是我找到的一段JS代碼,經實驗沒有問題。
<script type="text/Javascript">
function goDeeperChecked(obj)
{
var chk1 = true;
// Get the parent.
var head1 = obj.parentNode.previousSibling;
// no rows, cant do my work.
if(obj.rows == null)
{
return ;
}
// This is how may rows are at this level.
var pTreeLevel1 = obj.rows[0].cells.length;
// Are we a parentmy ?
if(head1.tagName == "TABLE")
{
// Get the list of rows ahead of us.
var tbls = obj.parentNode.getElementsByTagName("TABLE");
// get the count of that list.
var tblsCount = tbls.length;
// determine if any of the rows underneath are unchecked.
for(i = 0; i < tblsCount; i ++ )
{
var childTreeLevel = tbls[i].rows[0].cells.length;
if(childTreeLevel = pTreeLevel1)
{
var chld = tbls[i].getElementsByTagName("INPUT");
if (chld[0].checked == false)
{
chk1 = false;
break;
}
}
}
var nd = head1.getElementsByTagName("INPUT");
if (nd.length > 0)
{
nd[0].checked = chk1;
}
// do the same for the level above
goDeeperChecked(obj.parentNode);
}
else
{
return;
}
}
function
goDeeper(check, obj)
{
// head1 gets the parent node of the unchecked node
var head = obj.parentNode.previousSibling;
if(head.tagName == "TABLE")
{
// checks for the input tag which consists of checkbox
var matchElement = head.getElementsByTagName("INPUT");
// matchElement1[0] gives us the checkbox and it is unchecked
if (matchElement.length > 0)
{
matchElement[0].checked = false;
}
}
else
{
head = obj.parentNode.previousSibling;
}
if
(head.tagName == "TABLE")
{
goDeeper(check, obj.parentNode);
}
else
{
return
;
}
}
function treeVIEwCheck(event)
{
// obj gives us the node on which check or uncheck Operation has performed
var obj = event.srcElement || event.target ;
var treeNodeFound = false;
var checkedState;
// checking whether obj consists of checkbox to avoid exception
if(obj.tagName == "INPUT" && obj.type == "checkbox")
{nbsp; var treeNode = obj;
checkedState = treeNode.checked;
// work our way back to the parent < table > element
do
{
obj = obj.parentNode;
}
while(obj.tagName != "TABLE")
var parentTreeLevel = obj.rows[0].cells.length;
var parentTreeNode = obj.rows[0].cells[0];
// get all the TreeNodes inside the TreeVIEw (the parent < div > )
var tables = obj.parentNode.getElementsByTagName("TABLE");
// checking for any node is checked or unchecked during Operation
if(obj.tagName == "TABLE")
{
// if any node is unchecked then their parent node are unchecked
if( !treeNode.checked )
{
goDeeper(false, obj);
}
// end if - unchecked
// total number of TreeNodes
var numTables = tables.length
if(numTables >= 1)
{
// cycle through all the TreeNodes
// until we find the TreeNode we checked
for
(i = 0;
i &t; numTables;
i ++ )
{
if(tables[i] == obj)
{
treeNodeFound = true;
i ++ ;
if(i == numTables)
{
// if we''re on the last TreeNode, we are done
break;
}
}
if(treeNodeFound == true)
{
var childTreeLevel = tables[i].rows[0].cells.length;
if(childTreeLevel > parentTreeLevel)
{
var
cell = tables[i].rows[0].cells[childTreeLevel - 1];
if(treeNode.checked)
{
goDeeperChecked(obj);
}
// end if - checked
}