[转载]Asp.Net2.0权限树中Checkbox的操作

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

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

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

代码如下:

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

InBlock.gif    
return parent;
ExpandedBlockEnd.gif}

None.gif
None.gif
// 设置节点的父节点Cheched——该节点可访问,则他的父节点也必能访问
None.gif
function  setParentChecked(objNode)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif
InBlock.gif    
var objParentDiv = public_GetParentByTagName(objNode,"div");
InBlock.gif    
if(objParentDiv==null || objParentDiv == "undefined")
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
return;
ExpandedSubBlockEnd.gif    }

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

None.gif
None.gif
// 设置节点的子节点uncheched——该节点不可访问,则他的子节点也不能访问
None.gif
function  setChildUnChecked(divID)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif
InBlock.gif    
var objchild = divID.children;
InBlock.gif    
var count = objchild.length; 
InBlock.gif    
for(var i=0;i<objchild.length;i++)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
var tempObj = objchild[i];
InBlock.gif        
if(tempObj.tagName=="INPUT" && tempObj.type == "checkbox")
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            tempObj.checked 
= false;
ExpandedSubBlockEnd.gif        }

InBlock.gif        setChildUnChecked(tempObj); 
ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif}

None.gif
None.gif
// 设置节点的子节点cheched——该节点可以访问,则他的子节点也都能访问
None.gif
function  setChildChecked(divID)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif
InBlock.gif    
var objchild = divID.children;
InBlock.gif    
var count = objchild.length; 
InBlock.gif    
for(var i=0;i<objchild.length;i++)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
var tempObj = objchild[i];
InBlock.gif        
if(tempObj.tagName=="INPUT" && tempObj.type == "checkbox")
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            tempObj.checked 
= true;
ExpandedSubBlockEnd.gif        }

InBlock.gif        setChildChecked(tempObj); 
ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif}

None.gif
None.gif
// 触发事件
None.gif
function  CheckEvent()
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif
InBlock.gif    
var objNode = event.srcElement; 
InBlock.gif
InBlock.gif    
if(objNode.tagName!="INPUT" || objNode.type!="checkbox")
InBlock.gif    
return;
InBlock.gif
InBlock.gif    
if(objNode.checked==true)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        setParentChecked(objNode);
InBlock.gif        
var objID = objNode.getAttribute("ID");
InBlock.gif        
var objID = objID.substring(0,objID.indexOf("CheckBox")); 
InBlock.gif        
var objParentDiv = document.getElementById(objID+"Nodes");
InBlock.gif        
if(objParentDiv==null || objParentDiv == "undefined")
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
return;
ExpandedSubBlockEnd.gif        }
 
InBlock.gif        setChildChecked(objParentDiv);
ExpandedSubBlockEnd.gif    }

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

ExpandedBlockEnd.gif}

None.gif
None.gif

然后在page_load事件中将TreeView与js事件绑定上:

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

 

转载于:https://www.cnblogs.com/zhuhee/archive/2007/04/13/712299.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值