asp.net1.1下权限配置系统从设计到实现(三)

转载 2006年06月09日 18:06:00
怎么用脚本实现TreeView的父子节点联动功能? 由于Firefox本身的特点,在实现时分别在IE下用脚本实现,在Firefox下用.cs代码实现。由于这两种浏览器兼容性实在不怎么好,艾!
       OK,废话少说,现在首先给出实现TreeView父子节点联动选种脚本方法:
function ChcekFuncNodes(e)
  {
            
var i=e.clickedNodeIndex;
            
var node=e.getTreeNode(i);
            
var NodeArray=node.getChildren();
            
if(NodeArray.length>0)
            {
                        
if(node.getAttribute("Checked"== true)
                        {
                                    
for(var i=0;i<NodeArray.length;i++)
                                    {
                                       CheckTreeNode(NodeArray[i],
true,false);
                                       GetSelectedFunctionPointID(NodeArray[i]);        
                                    }
                                    GetSelectedFunctionID(node);
                        }
                        
else
                        {
                                  
for(var i=0;i<NodeArray.length;i++)
                                    {
                                       CheckTreeNode(NodeArray[i],
false,false);        
                                    }
                         }
             }
             
else 
             {
                        
var ParentNode=node.getParent();
                        
if(ParentNode!=null)
                        {
                                    
if(node.getAttribute("Checked"== true)
                                    {        
                                              GetSelectedFunctionPointID(node);
                                              CheckTreeNode(ParentNode,
true,false);
                                              GetSelectedFunctionID(ParentNode);
                                    }
                                    
else
                                    {
                                            
if(AllChildTreeNodeSameCheck(ParentNode,false))
                                            {
                                                CheckTreeNode(ParentNode,
false,false);
                                            }
                                      }
                    }
                    
else
                    {
                        CheckTreeNode(node,
true,false);
                        GetSelectedFunctionID(node);
                    }
               }
      }
function CheckTreeNode(chilNode,isCheck,atuoSetChilTreeNode)
    {
 
            
if(chilNode!=null)
            { 
                        
//alert(chilNode);
                        chilNode.setAttribute('checked',isCheck);
                        
if(atuoSetChilTreeNode)
                        {
                        CheckChildTreeNode(chilNode,isCheck)
                        }
            }
   }
 function CheckChildTreeNode(Pnode,isCheck)
  {
            
if(Pnode!=null)
            {
                        
var arr=Pnode.getChildren();
                        
for(var i=0;i<arr.length;i++)
                        {
                         arr[i].setAttribute('checked',isCheck);
                        }
            }
  }
 function AllChildTreeNodeSameCheck(PareNode, value)
  {
         
if(PareNode!=null)
         {
                    
var chids=PareNode.getChildren();
                    
for(var i=0;i<chids.length;i++)
                    {
                                    
if(chids[i].getAttribute("Checked")!=value)
                                    {
                                      
return false;
                                    }
                      }
         }
          
return true;
  }
大家都知道,不用多讲,下面两个方法是纪录用户选中的FunctionID和FunctionPointID,通过隐藏控件传递给.cs文件使用,补充一下就是为什么我用document.getElementById('<%=hidenFunID.ClientID%>')而不用document.getElementById('hidenFunID')?原因是我的脚本是放在ascx文件中的(即UserControl中的)所以只能通过这种方式来找控件,否则就找不到哟!算是个小技巧吧 :)
 function GetSelectedFunctionID(nodes) 
     {
         
var hideFun = document.getElementById('<%=hidenFunID.ClientID%>');
         
var checkFun = hideFun.value;
         checkFun 
+= nodes.getAttribute("ID")+";";
         hideFun.value 
=checkFun;    
        
// alert(hideFun.value);
     }  
function GetSelectedFunctionPointID(nodes)
     {
         
var hideFunPoint = document.getElementById('<%=txtPointId.ClientID%>');
         
var checkFun = hideFunPoint.value;
         checkFun 
+= nodes.getAttribute("ID")+";";
         hideFunPoint.value 
=checkFun;    
         
//alert(hideFunPoint.value);
     }  
最后一步,让TreeView父子节点联动产生真正的效果,哈哈.................
private void Page_Load(object sender, System.EventArgs e)
        {
            
if(!
Page.IsPostBack )
            {
                 tvRoleFunctions.Attributes.Add("oncheck","ChcekFuncNodes(this)");
            }        
        }

下次写作预告:
怎么实现Select All  TreeView全部节点的功能?怎么实现展开和折叠自如?

http://jigee.cnblogs.com/archive/2006/06/09/421367.html#421589

相关文章推荐

ASP.NET系统用户权限设计与实现

引言     电子商务系统对安全问题有较高的要求,传统的访问控制方法DAC(Discretionary Access Control,自主访问控制模型)、MAC(Mandatory Access C...

ASP.NET系统用户权限设计与实现

  • 2012年10月22日 11:21
  • 109KB
  • 下载

ASP.NET系统用户权限在.NET中的设计与实现

利用.NET中的用户控件实现权限控制的基本思想是:根据角色访问控制(RBAC)的基本原理,给用户分配一个角色,每个角色对应一些权限,然后利用ASP.NET中的用户控件(UserControl)来判断该...

ASP.NET系统用户权限在.NET中的设计与实现

利用.NET中的用户控件实现权限控制的基本思想是:根据角色访问控制(RBAC)的基本原理,给用户分配一个角色,每个角色对应一些权限,然后利用ASP.NET中的用户控件(UserControl)来判断该...

ASP.NET网站权限设计实现——套用JQuery EasyUI列表显示数据、分页、查询

有时候闲的无聊,看到extjs那么肥大,真想把自己的项目改了,最近看到一款轻型的UI感觉不错,但是在网上找了好多教程,但是没有一个是完全是C#asp.net写的 无耐下,自己写了下,感觉效果不错,故...

ASP.net MVC 基于角色的权限控制系统的实现

一、引言 我们都知道ASP.net mvc权限控制都是实现AuthorizeAttribute类的OnAuthorization方法。 下面是最常见的实现方式: public ...

ASP.NET WEBAPI实现微信JS-SDK接口注入权限验证配置

ASP.NET WEBAPI实现微信JS-SDK接口注入权限验证配置 我们的客户端是一个HTML5客户端,我们计划采用微信提供的JS-SDK,但是所有需要使用JS-SDK的页面必须先注入配置信息,否...

ASP.NET网站权限设计实现(一)——使用PowerDesigner进行数据库设计

这里用PowerDesigner做一个初步的设计,后面可能会有修改。1、启动PowerDesigner新建物理数据模型 2、工具栏3、新建表模型4、添加第一张表,可以双击表或右键菜单打开下面窗口 别忘...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:asp.net1.1下权限配置系统从设计到实现(三)
举报原因:
原因补充:

(最多只允许输入30个字)