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都是保存在数据库,操作类型也是动态从数据库读取的。
最近事情太多了,等没这么忙了之后好好整理一下。
作者:Allen Chen无影
邮箱:allen0717@163.com 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?