Treeview与权限(我的一个小解决方法)

        我看过比较多的treeview与权限的解决方法,感觉总是太复杂,而且不实用(也许自己太笨,仅仅是个人看法)。下面我用treeview与数据库结合来实现下面图所示的权限(角色)的管理。
       有一个图可以参考:
  

首先,应该有2个表:
 表1:     Accounts_PermissionCategories(权限类别表)
      ID          Name           desc
     01          案件处理
     02          统计报表
     03          商标查询
  表2:   Accounts_Permission(权限表)
     ID         CategoryID        Name                        desc   
     01          01                     立案资料录入
     02          01                     立案资料查询



  private void Page_Load(object sender, System.EventArgs e)
  {
      if(!Page.IsPostBack)
          {
           BindPermissionCategories();
           BindPermission();
          }
  }

   
  private void BindPermissionCategories()
  {//绑定权限类别信息
   string info = string.Empty;

   RG.JGJ.Modules.Accounts.Business.PermissionCategory pc = new RG.JGJ.Modules.Accounts.Business.PermissionCategory();
   SortedList sl = pc.GetPermissionCategoriesForTreeView(out info);
   int count = sl.Count;

   Microsoft.Web.UI.WebControls.TreeNode[] rootNodes = new Microsoft.Web.UI.WebControls.TreeNode[count];

   for(int i=0;i<count;i++)
   {
    rootNodes[i] = new Microsoft.Web.UI.WebControls.TreeNode();
    rootNodes[i].Expanded = true;
    rootNodes[i].Text = sl.GetByIndex(i).ToString();
    rootNodes[i].NodeData = sl.GetKey(i).ToString();
    TreeView1.Nodes.Add(rootNodes[i]);
   }
  }

  #region
  private void BindPermission()
  {//绑定权限信息
   string info = string.Empty;
   Microsoft.Web.UI.WebControls.TreeNodeCollection nodes = TreeView1.Nodes;

   if(nodes.Count > 0)
   {
    RG.JGJ.Modules.Accounts.Business.Permission p = new RG.JGJ.Modules.Accounts.Business.Permission();
   
    for(int i=0;i<nodes.Count;i++)
    {
     SortedList sl = p.GetPermissionForTreeView(nodes[i].NodeData,out info);
     int count = sl.Count;
     Microsoft.Web.UI.WebControls.TreeNode[] ns = new Microsoft.Web.UI.WebControls.TreeNode[count];

     for(int j=0;j<count;j++)
     {
      ns[j] = new Microsoft.Web.UI.WebControls.TreeNode();
      ns[j].Expanded = true;
      ns[j].Text = sl.GetByIndex(j).ToString();
      ns[j].NodeData = sl.GetKey(j).ToString();
      ns[j].CheckBox = true;
      nodes[i].Nodes.Add(ns[j]);
     }
    }
   }
  }
  #endregion

  private void Button1_Click(object sender, System.EventArgs e)
  {
   foreach(Microsoft.Web.UI.WebControls.TreeNode node in TreeView1.Nodes)
   {
    //Response.Write(node.Text + ":" + node.NodeData + "<br>");
    foreach(Microsoft.Web.UI.WebControls.TreeNode n in node.Nodes)
    {
     if(n.Checked == true)
     {//下面的数据就是我们想要的结果,实现了角色的生成
       //((...)n.Parent).NodeData是权限类别的ID
       //n.NodeData是权限的ID
      Response.Write(((Microsoft.Web.UI.WebControls.TreeNode)(n.Parent)).NodeData + ":" + n.NodeData + "<br>");
     }
    }
   }
  }
 }
}


上面的代码我都编译通过,而且达到预期目的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值