做权限的时候,主要实现如下功能
1、该节点可以访问,则他的父节点也必能访问;
2、该节点可以访问,则他的子节点也都能访问;
3、该节点不可访问,则他的子节点也不能访问。
使用带CheckBox的数型结构能得到很好的用户体验,可是编程的难度也是有点增加,如果全部有服务端来完成,那点下刷下,肯定不行,只能使用javascript,javascript调试的时候郁闷的很,一个字类,还有郁闷的递归,麻烦
我以前是使用以下该方法
<scriptlanguage="javascript">
<!--
//初始化节点
initchecknode(document.all("tvItemClientID").value,document.all("checked").value)
//初始化选中节点
functioninitchecknode(tree,tvvalue)
{
//获得需要初始化选择状态的节点的字符串.
varselectedNodes=tvvalue;
vararrayNodes=newArray();
arrayNodes=selectedNodes.split(",");
varAllRootNode=newArray();
AllRootNode=document.getElementById(tree).getChildren();
//初始化选择的节点
findAndCheckedNodes(AllRootNode,arrayNodes);
}
//根据已选择的节点的字符串初始化选择的节点
functionfindAndCheckedNodes(NodeArray,nodeDatas)
{
//alert(NodeArray.length);
if(parseInt(NodeArray.length)==0)
{
return;
}
else
{
for(vari=0;i<parseInt(NodeArray.length);i++)
{
varcNode,nodeData;
cNode=NodeArray[i];
////如果该节点在nodeDatas里则初始化checked=true;
nodeData=cNode.getAttribute("NodeData");
for(varj=0;j<nodeDatas.length;j++)
{
if(nodeDatas[j]==nodeData)
{
cNode.setAttribute("checked","true");
break;
}
}
//如果有子节点,则继续递归
if(parseInt(cNode.getChildren().length)!=0)
findAndCheckedNodes(cNode.getChildren(),nodeDatas);
}
}
}
//-->
//oncheck事件
functiontree_oncheck(tree)
{
vari;
varnode=tree.getTreeNode(tree.clickedNodeIndex);
varPchecked=tree.getTreeNode(tree.clickedNodeIndex).getAttribute("checked");
setcheck(node,Pchecked);
setParent(node,Pchecked);
//window.alert(Pchecked);
document.all.checked.value="";
if(tree.getChildren().length>0)
{
for(i=0;i<=tree.getChildren().length-1;i++)
{
if(tree.getChildren()[i].getAttribute("Checked"))
{
AddChecked(tree.getChildren()[i]);
}
FindCheckedFromNode(tree.getChildren()[i]);
}
}
}
//设置子节点选中
functionsetcheck(node,Pchecked)
{
vari;
varChildNode=newArray();
ChildNode=node.getChildren();
if(parseInt(ChildNode.length)==0)
{
return;
}
else
{
for(i=0;i<ChildNode.length;i++)
{
varcNode;
cNode=ChildNode[i];
cNode.setAttribute("Checked",Pchecked);
//cNode.Checked=Pchecked;
if(parseInt(cNode.getChildren().length)!=0)
{
setcheck(cNode,Pchecked);
}
}
}
}
//设置子节点选中/取消;
//同时需要设置父节点的状态(如果是取消选中的话,仅仅设置本节点及其所有字接点,不涉及父接点)
functionsetParent(node,Pc)
{
varparentNode=node.getParent();
if(parentNode)
{
varparentNodeFather=parentNode.getParent();
if(parentNodeFather)
{
setParent(parentNode,Pc);
}
if(Pc)
{parentNode.setAttribute("checked",Pc);}
else
{
checkBrother(parentNode,Pc,node.getAttribute("NodeData"))
}
}
}
//检查子接点是否有选择的,如果有一个选择了,那返回true
//只查第一级节点.
functioncheckBrother(parentNode,Pc,NodeData)
{
varchildNodes=newArray();
childNodes=parentNode.getChildren();
if(childNodes.length>0)
{
varbChecked=true;
for(vari=0;i<childNodes.length;i++)
{
if(childNodes[i].getAttribute("checked")==true&&childNodes[i].getAttribute("NodeData")!=NodeData)
{
//alert(i+childNodes[i].getAttribute("Text"));
bChecked=false;
break;
}
}
if(bChecked)
{
parentNode.setAttribute("checked",Pc);
}
else
{
//所有父结点选择
setParent(parentNode,!Pc)
}
}
else
{
parentNode.setAttribute("checked",Pc);
}
}
//获取所有节点状态
functionFindCheckedFromNode(node)
{
vari=0;
varnodes=newArray();
nodes=node.getChildren();
for(i=0;i<=nodes.length-1;i++)
{
if(nodes[i].getAttribute("Checked"))
{
AddChecked(nodes[i]);
}
if(parseInt(nodes[i].getChildren().length)!=0)
{
FindCheckedFromNode(nodes[i]);
}
}
}
//添加选中节点
functionAddChecked(node)
{
document.all.checked.value+=node.getAttribute("NodeData")+",";
}
//-->
</script>
这种方法有个很大的问题,就是他客户端设置的CheckBox在服务器端是不能获取的,现在只能在Check的时候遍历树,并把Checked的值放在一个文本里,然后提交到服务器,然后服务器来解析
1@2@这种字符
现在我使用的是asp.net2.0,使用的是以下的方法
相关推荐
asp.net 2.0 宝典随书光盘,我的上传权限不够大,只能传开头的部分
asp.net2.0权限管理系统 功能强大,全面
ASP.net 2.0三级权限管理,英文版的,有用的可以下下来看看
6.5.2 角色权限管理 142 6.5.3 仓储管理 147 6.5.4 报表管理 149 第7章 在线帮助系统 156 7.1 系统总体设计 156 7.1.1 系统功能描述 156 7.1.2 系统功能模块划分 156 7.2 数据库设计 157 7.3 通用...
大学毕业设计(在线考试系统)ASP.Net2.0 1. 系统应该具备的基本功能 2. ☆用户注册:用户可以进行注册,然后登录。 3. ☆用户信息的管理:管理员可以增删用户,包括教师帐号 4. ☆试题库管理:题型、试题库的管理,...
\ UserControls\LeftTree.ascx 系统菜单树用户控件 \ UserControls\Include\applicant.xml 申请者菜单项 \ UserControls\Include\manager.xml 管理员菜单项 \ Admin.aspx 管理员首页 \ Default.aspx...
基于asp.net2.0中membership系统角色、用户、资源的权限设计
2.ASP.NET.2.0.高级编程(第4版) [1/7] 原书名: Professional ASP.NET 2.0 原出版社: Wrox 作者:(美)Bill Evjen, Scott Hanselman, Farhan Muhammad [同作者作品] [作译者介绍] 译者: 李敏波[同译者作品] ...
基于asp.net2.0 C#开发的网络商城 (一)、前台功能说明 ☆新闻专区 ☆全店商品 ☆会员中心 ☆购物车 ☆帮助中心 ☆客户留言 <br/>(二)、会员功能说明 ☆消息中心(会员可以给...
第二篇典型模块设计 第8章网络用户管理系统 8.1系统功能概述 8.2数据库设计 8.3设计错误处理页面 8.4关键技术详解 8.4.1防止恶意用户SQL注入攻击 ...8.5.8设置用户权限 8.5.9修改用户密码 8.5.10退出登录
ASP.NET2.0+Visual Studio 2005+Sql Server 2000权限控管项目,主要实现功能权限控管,通讯录人员分组。
20.1 投票系统的功能模块 365 20.1.1 投票主题管理模块 366 20.1.2 投票项目管理模块 366 20.1.3 投票功能管理模块 ...20.2.1 数据库表设计 366 20.2.2 数据库中数据之间的关系 367 ...20.6 投票系统后台权限管理模块 380
本书全面介绍了ASP.NET各种编程技能和2.0版中的巨大变化,并详细阐述了2.0版中的每个新特性。书中提供了大量的实例,可帮助读者快速掌握如何在.NET平台下开发功能强大的ASP.NET应用程序。本书适合有一些基础的ASP...
这里使用asp.net2.0的TreeView控件结合JavaScript实现权限树的部分功能。 假设权限树中有如下三条规则: 1、该节点可以访问,则他的父节点也必能访问; 2、该节点可以访问,则他的子节点也都能访问; 3、该节点...
ASP.NET2.0实现的通用权限管理系统,已调试可运行。
<br>该项目是一个基于接口的工厂模式的三层架构示例解决方案的 Asp.Net 2.0版本。 <br>****************************************************** <br>Database : 该项目所使用的数据库 DEncryptTest ...
1、搭建asp.net2.0环境 (不会去百度搜索) MDAC数据访问组件下载 MDAC2.8 中文版下载地址: http://download.microsoft.com/download/8/b/6/8b6198c0-fe96-4811-9d81-d5c76dd5fea8/MDAC_TYP.EXE Microsoft ...
ASP.NET core2.0基础权限源码.rarASP.NET core2.0基础权限源码.rarASP.NET core2.0基础权限源码.rarASP.NET core2.0基础权限源码.rar
由于对asp.net不熟悉,更是用了一些练习时的自定义控件,界面十分牵强简陋.感到不安. 最近抽时间修缮了一下.对原先必须的一些自定义控件重新设计增强,并尽量地使用VS原装. 1.增加菜单,分页,选项卡等控件 2.栏目\论坛...