惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 聂微东
MyScale Blog
MyScale Blog
The GitHub Blog
The GitHub Blog
C
Check Point Blog
M
MIT News - Artificial intelligence
U
Unit 42
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
H
Help Net Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
D
DataBreaches.Net
大猫的无限游戏
大猫的无限游戏
D
Docker
Last Week in AI
Last Week in AI
IT之家
IT之家
F
Fortinet All Blogs
A
About on SuperTechFans
P
Proofpoint News Feed
The Cloudflare Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
B
Blog RSS Feed
博客园_首页
月光博客
月光博客
博客园 - 司徒正美
Y
Y Combinator Blog

博客园 - 老狐狸

关于Update语句在不同数据库中的差别 出错存储过程 F_GETTABLELID 正则表达式求值 - 老狐狸 - 博客园 创建层次查询 ultrawebgrid - 老狐狸 - 博客园 javascript - 老狐狸 - 博客园 case when用法和and 后加条件 exp/imp导出导入工具的使用 ASP.NET1.1中Grid自定义眉头 asp.net1.0 TreeView 创建记录、数组 关闭远程数据库连接 创建游标 创建新的序列 创建隐式游标 创建临时表 更新表(多表相关联)
asp.net2.0 TreeView
老狐狸 · 2006-06-27 · via 博客园 - 老狐狸

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