zoukankan      html  css  js  c++  java
  • WinForm开发框架【细化权限至操作按钮】

      有不少园友经常问我程序有没有更新,真的很抱歉,最近因为工作原因一直很忙,导致程序有很长时间都没有更新了,首先在这里感谢关心俺的朋友们。

      这几天好好看了一下原来的程序,还有很多地方需要改进,比如操作数据库的方式、权限、报表等等,数据库与报表下一步逐步进行更新,先将权限再细化一点儿,精确到操作按钮上面,本来想在菜单下面跟着添加按钮权限的,这样的话看上去直观一些,如下图所示:

    但是在开发过程中遇到了几个比较棘手的问题,如果要整理出来的话改动的地方会很多,所以暂时我将按钮权限提出来了,当然这个功能是一模一样的,数据也都是从数据库提取出来的,只是在视觉上面感觉有点遗憾。
    下图所示:当前用户对“菜单信息设置”只有查看的权限,没有其它操作权限,

    现在给它分配操作的权限,如下图:

    然后在页面的Load里面增加了以下代码:

    /// <summary>
            /// 根据权限列表里面的信息,来决定用户具体有哪些操作权限。
            /// </summary>
            void SetButton()
            {
                DataTable dt_SetButton = new DataTable();
                dt_SetButton = new sys_RoleManager().GetUserRoleByUserID("1", allenSingleton.UserID);
                if (dt_SetButton.Rows.Count > 0)
                {
                    DataTable dt_New = new DataTable();
                    dt_New = dt_SetButton.Clone();
                    //这一步其实可以直接从数据库查询出来,如果放在存储里面完成的话也需要另外添加一个FunctionName的参数
                    //所以就在程序里面从Table里面Select一下。
                    DataRow[] dr = dt_SetButton.Select("FunctionName='菜单资料设置'");
                    for (int i = 0; i < dr.Length; i++)
                    {
                        dt_New.ImportRow((DataRow)dr[i]);
                    }
    
                    if (dt_New.Rows[0]["AddID"].ToString() != "")
                    {
                        this.tsCreate.Enabled = true;
                    }
                    if (dt_New.Rows[0]["DeleteID"].ToString() != "")
                    {
                        this.tsDelete.Enabled = true;
                    }
                    if (dt_New.Rows[0]["UpdateID"].ToString() != "")
                    {
                        this.tsChange.Enabled = true;
                    }
                    if (dt_New.Rows[0]["PrintID"].ToString() != "")
                    {
                        this.tsPrint.Enabled = true;
                    }
                }
            }

    从下图可以看到当前用户已经可以对“菜单信息设置”进行删除和打印了

    对应的操作ID都是保存在数据库,操作类型也是动态从数据库读取的。

    最近事情太多了,等没这么忙了之后好好整理一下。

  • 相关阅读:
    打sql server pack4后打开网站报错的解决办法
    北京大学的三角形文章
    一次SQL Server 2000修复实践的说明
    今天重看了几集《将爱情进行到底》
    MakeFile的写法
    [经验杂谈]与大虾对话:领悟设计模式zz
    论函数调用约定(zz)
    用标准模板库STL实现文件比较(zz)
    C++中的虚函数(virtual function)
    为学院科研办做的个小应用管理程序
  • 原文地址:https://www.cnblogs.com/allen0118/p/3736528.html
Copyright © 2011-2022 走看看