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

这里使用asp.net2.0的TreeView控件结合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事件中将TreeView与js事件绑定上:
this.TreeView1.Attributes.Add("onclick", "CheckEvent()");  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值