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

推荐订阅源

Y
Y Combinator Blog
博客园_首页
量子位
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
H
Help Net Security
The Cloudflare Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
A
About on SuperTechFans
腾讯CDC
H
Hackread – Cybersecurity News, Data Breaches, AI and More
D
DataBreaches.Net
L
LangChain Blog
Stack Overflow Blog
Stack Overflow Blog
Jina AI
Jina AI
月光博客
月光博客
云风的 BLOG
云风的 BLOG
博客园 - 聂微东
Hugging Face - Blog
Hugging Face - Blog
雷峰网
雷峰网
C
Check Point Blog
V
V2EX
T
Tailwind CSS Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Microsoft Security Blog
Microsoft Security Blog

博客园 - 星宿.NET

MOSS SSO -2147217900调用 SPS Single Sign-on 失败。返回的错误代码为“-2147217900”。 错误 数据关系图出现“此数据库没有有效所有者”错误的解决方法 - 星宿.NET - 博客园 SQL 语句建立连接服务器 SQL语句进行left join的时候发生Cannot resolve collation conflict for equal to operation.错误 列出域中所有用户的代码 跟我一起学Windows Workflow Foundation(7)-----给定制活动添加有效性验证 跟我一起学Windows Workflow Foundation(6)-----制作一个基本的定制活动 treeview控制checkbox修改版(2) treeview控制checkbox修改版(1) 通过WPF/E制作一个从数据库读取数据的图谱 [转载]如何使用 Visual C# 2005 或 Visual C# .NET 向 Excel 工作簿传输数据 跟我一起学Windows Workflow Foundation(5)-----使用activity设计器创建一个整合的定制activity 跟我一起学Windows Workflow Foundation(4)-----使用Listen,Delay,和其他envnt-based定制活动 跟我一起学Windows Workflow Foundation(3)-----使用If/Else活动,定制活动处理工作流,使用事件传递数据 和我一起学Windows Workflow Foundation(2)-----让WF通过参数接收数据 和我一起学Windows Workflow Foundation(1)-----创建和调试一个WF实例 将visual studio 2005 SP1补丁整合到安装文件 初学使用sharepoint 2007 用户控件包装器 QuickPart 创建或修改WSS的主题
[转载]Asp.Net2.0权限树中Checkbox的操作
星宿.NET · 2007-04-13 · via 博客园 - 星宿.NET

 网上搜索了,但是找不到此文章的作者

Asp.Net2.0权限树中Checkbox的操作

  这里使用asp.net2.0TreeView控件结合JavaScript实现权限树的部分功能。
  假设权限树中有如下三条规则:
  1、该节点可以访问,则他的父节点也必能访问;
  2、该节点可以访问,则他的子节点也都能访问;
  3、该节点不可访问,则他的子节点也不能访问。

代码如下:

//获取元素指定tagName的父元素
function public_GetParentByTagName(element, tagName) 
{
    
var parent = element.parentNode;
    
var upperTagName = tagName.toUpperCase();
    
//如果这个元素还不是想要的tag就继续上溯
    while (parent && (parent.tagName.toUpperCase() != upperTagName)) 
    
{
        parent 
= parent.parentNode ? parent.parentNode : parent.parentElement;
    }

    
return parent;
}


//设置节点的父节点Cheched——该节点可访问,则他的父节点也必能访问
function setParentChecked(objNode)

    
var objParentDiv = public_GetParentByTagName(objNode,"div");
    
if(objParentDiv==null || objParentDiv == "undefined")
    
{
        
return;
    }

    
var objID = objParentDiv.getAttribute("ID");
    objID 
= objID.substring(0,objID.indexOf("Nodes"));
    objID 
= objID+"CheckBox";
    
var objParentCheckBox = document.getElementById(objID);
    
if(objParentCheckBox==null || objParentCheckBox == "undefined")
    
{
        
return;
    }
 
    
if(objParentCheckBox.tagName!="INPUT" && objParentCheckBox.type == "checkbox")
    
return
    objParentCheckBox.checked 
= true;
    setParentChecked(objParentCheckBox);
}


//设置节点的子节点uncheched——该节点不可访问,则他的子节点也不能访问
function setChildUnChecked(divID)

    
var objchild = divID.children;
    
var count = objchild.length; 
    
for(var i=0;i<objchild.length;i++)
    
{
        
var tempObj = objchild[i];
        
if(tempObj.tagName=="INPUT" && tempObj.type == "checkbox")
        
{
            tempObj.checked 
= false;
        }

        setChildUnChecked(tempObj); 
    }

}


//设置节点的子节点cheched——该节点可以访问,则他的子节点也都能访问
function setChildChecked(divID)

    
var objchild = divID.children;
    
var count = objchild.length; 
    
for(var i=0;i<objchild.length;i++)
    
{
        
var tempObj = objchild[i];
        
if(tempObj.tagName=="INPUT" && tempObj.type == "checkbox")
        
{
            tempObj.checked 
= true;
        }

        setChildChecked(tempObj); 
    }

}


//触发事件
function CheckEvent()
{

    
var objNode = event.srcElement; 

    
if(objNode.tagName!="INPUT" || objNode.type!="checkbox")
    
return;

    
if(objNode.checked==true)
    
{
        setParentChecked(objNode);
        
var objID = objNode.getAttribute("ID");
        
var objID = objID.substring(0,objID.indexOf("CheckBox")); 
        
var objParentDiv = document.getElementById(objID+"Nodes");
        
if(objParentDiv==null || objParentDiv == "undefined")
        
{
            
return;
        }
 
        setChildChecked(objParentDiv);
    }

    
else
    
{
        
var objID = objNode.getAttribute("ID");
        
var objID = objID.substring(0,objID.indexOf("CheckBox")); 
        
var objParentDiv = document.getElementById(objID+"Nodes");
        
if(objParentDiv==null || objParentDiv == "undefined")
        
{
            
return;
        }
 
        setChildUnChecked(objParentDiv);
    }

}


然后在page_load事件中将TreeViewjs事件绑定上:

this.TreeView1.Attributes.Add("onclick", "CheckEvent()");