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

推荐订阅源

V
Visual Studio Blog
Microsoft Azure Blog
Microsoft Azure Blog
WordPress大学
WordPress大学
小众软件
小众软件
Last Week in AI
Last Week in AI
月光博客
月光博客
博客园 - 聂微东
Recent Announcements
Recent Announcements
A
About on SuperTechFans
博客园 - 三生石上(FineUI控件)
V
V2EX
阮一峰的网络日志
阮一峰的网络日志
博客园 - Franky
云风的 BLOG
云风的 BLOG
量子位
N
Netflix TechBlog - Medium
Hugging Face - Blog
Hugging Face - Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
J
Java Code Geeks
博客园 - 司徒正美
S
SegmentFault 最新的问题
有赞技术团队
有赞技术团队
Google DeepMind News
Google DeepMind News
宝玉的分享
宝玉的分享

博客园 - 老狐狸

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