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

此权限系统的涉及到的数据表结构如下:

 

很简单,有图在此一目了然。一个角色对应多个功能,而每个功能又包含很多子功能,所以在设计的时候考虑要用到这5张表。在进行开发之前需要安装和配置TreeView控件,如果不知道怎么用可以参看这里:http://jigee.cnblogs.com/archive/2006/04/14/375623.html;应为实现这样的系统主要问题是解决TreeView的问题,开发的时候考虑到代码的简洁和以后便于维护,所以放在了UserControl中,这个对你可能没什么关系,主要是因为我们的系统还有其他模块要集成在一起,通过动态加载用户控件的形式来完成页面的切换工作!PS:为了不涉及公司代码的外泄,我只将写出一些与公司信息无关但又是实现此功能的核心代码,也就是说只写与TreeView有关的部分代码,OK!不说了开始我们的codeing ! TeeView的HTML如下:

< div  id ="dvRolesFunction"  style ="BORDER-RIGHT: #99ccff 2px solid; BORDER-TOP: #99ccff 2px solid; OVERFLOW: auto; BORDER-LEFT: #99ccff 2px solid; WIDTH: 400px; BORDER-BOTTOM: #99ccff 2px solid; HEIGHT: 485px" >
< iewc:treeview  id ="tvRoleFunctions"  runat ="server" SystemImagesPath ="../webctrl_client/1_0/treeimages/"  showlines ="true"  shoplus ="true" >
</ iewc:treeview >
</ div >

填充TeeView控件的主要代码如下:

private   void  FillFuntionAndPointInfo()
{
    
string  name, value;
    TreeNode parentTreeNode 
=   null ;
    TreeNode childTreeNode;
    DataSet ds 
=  MappingUser.GetFunctionAndFunctionPoint();
   if  (ds  !=   null   &&  ds.Tables[ 0 !=   null )
   {
                
for  ( int  i  =   0 ; i  <  ds.Tables[ 0 ].Rows.Count; i ++ )
                {
                    value 
=  Common.GetFieldValue(ds.Tables[ 0 ].Rows[i][ " functionid " ],  "" ); //为了获得有效的返回值
                    name 
=  Common.GetFieldValue(ds.Tables[ 0 ].Rows[i][ " functionname " ],  "" );//  .DLL不会公开
                    
if  (parentTreeNode  ==   null   ||  parentTreeNode.Text  !=  name)
                    {
                        parentTreeNode 
=   new  TreeNode();
                        parentTreeNode.Text 
=  name;
                        parentTreeNode.CheckBox
= true ;
                        parentTreeNode.ID 
= value; 
                        parentTreeNode.Expandable
= ExpandableValue.Auto; 
                        tvRoleFunctions.Nodes.Add(parentTreeNode);
                    }
                    value 
=  Common.GetFieldValue(ds.Tables[ 0 ].Rows[i][ " functionpointid " ],  "" ).Trim();
                    name 
=  Common.GetFieldValue(ds.Tables[ 0 ].Rows[i][ " functionpointname " ],  "" );
                    
if  (value.Length  >   0 )
                    {
                        childTreeNode 
=   new  TreeNode();
                        childTreeNode.Text 
=  name;
                        childTreeNode.CheckBox
= true
                        childTreeNode.ID  
=  value;
                        childTreeNode.Expandable
= ExpandableValue.Auto; 
                        parentTreeNode.Nodes.Add(childTreeNode);
                    }
                }
            }
        }

GetFunctionAndFunctionPoint()方法用到的Sql语句如下:

SELECT    functionid,
                  b.name 
AS  functionname,
                  functionpointid,
                  c.name 
AS  functionpointname
                   
FROM      Function b (NOLOCK),
                                   
FunctionRelationPoint a (NOLOCK)
                                    
LEFT   JOIN FunctionPoint c (NOLOCK)  ON  a.FunctionPointID  =  c.id
                                
WHERE     a.FunctionID  =  b.id
                                
ORDER   BY  functionid,functionpointid


下次写作预告:
怎么用脚本实现TreeView的父子节点联动和全选的功能,之前我在网上和CSDN找过一个实现父子节点联动效果的方法,可惜是在TreeView.htc文件中实现,由于考虑到项目部署时可能带来问题,干脆自己用javaScript实现。

http://jigee.cnblogs.com/archive/2006/06/08/420792.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值