从零开始编写自己的C#框架(18)——Web层后端权限模块——菜单管理
2014-06-20 14:45
316 查看
从本章开始,主要讲解的是页面中对框架相关功能的调用方法,比如列表页面(又分为有层次感列表和普通列表)、编辑页面、多标签页面等,只要熟悉了这些函数的使用方法,那么开发起来就会很便捷了。
1、如图先创建菜单列表与编辑页面
View Code
而更新状态的函数MenuInfoBll.GetInstence().UpdateIsDisplay()、MenuInfoBll.GetInstence().UpdateIsMenu(),我们模板里已经生成了,直接调用即可
最后一列编辑按键,这个根据需要可以放到顶部的工具条里(在前面代码大家可以看到我将其注释了),也可以放到这里来,而放到这里的话,则需要在表格绑定的代码中实现
由于整个权限模块未开发出来,所以我先将按键的权限判断注释掉了(//lbfEdit.Enabled = MenuInfoBll.GetInstence().CheckControlPower(this, "ButtonEdit");)
在Grid点击事件中,打开隐藏的编辑窗口
//打开编辑窗口
Window1.IFrameUrl = "MenuInfoEdit.aspx?Id=" + id + "&" + MenuInfoBll.GetInstence().PageUrlEncryptStringNoKey(id + "");
Window1.Hidden = false; //显示窗口
在上面的Url链接中,我们需要传递两个参数,一个是将要编辑的记录Id,一个是页面加密处理参数,通过MenuInfoBll.GetInstence().PageUrlEncryptStringNoKey(id + "")函数来生成对应的页面加密参数,系统在对密钥进行识别处理时,会按顺序默认对Id、pid、ParentId、Key这几个值做为密钥生成值进行识别,具体大家自行研究一下吧。
而对于工具栏中的按键实现,添加新记录对应的是Add()函数、编辑记录对应的是Edit()函数、删除记录对应的是Delete(),当然工具栏中按键的命名要求必须同上面那几个一样,具体实现这里就不再一一细说,大家直接看代码吧。
由于时间关系,编辑页面代码就不进行解说,大家自己进行研究吧,下面上一张编辑页面运行后的图片
![](http://images.cnitblog.com/i/129385/201406/201408049572016.png)
另外,为了由于权限模块未完成,所以将相关的权限判断都注释掉了,等后面完善后再启用。
本次更新,除了修改一些小问题外,也修改了CommonBll.cs类的添加用户访问页面记录函数,以及自定义类UseLogBll.cs类的添加用户操作日志函数,让用户访问页面记录运行起来,当然这个表记录的不至这些访问内容,它还会将用户的增、删、查、改等所有操作都记录下来,下面看看效果图(这个函数会将用户登陆进系统后每一步访问都记录下来,这个要求是来自以前的公司老总,当时做了一个OA系统公司自己用,他看了后就说:OA开发后,如果大家都不登陆不使用那有等于没有,能不能实现通过后端查看,知道大家有没有使用。再然后就多了这个功能,呵呵)
![](http://images.cnitblog.com/i/129385/201406/201120439421463.png)
本章内容看起来比较乱,大家最好直接运行解决方案代码,在浏览器中运行查看效果,再结合代码查看可能会容易理解,还有一点要补充的是,本解决方案不包含extjs代码,需要大家自行下载放到根目录里
Web层后端权限模块菜单管理.rar
版权声明:
本文由AllEmpty原创并发布于博客园,欢迎转载,未经本人同意必须保留此段声明,且在文章页面明显位置给出原文链接,[b]否则保留追究法律责任的权利。如有问题,可以通过1654937@qq.com 联系我,非常感谢。[/b]
发表本编内容,只要主为了和大家共同学习共同进步,有兴趣的朋友可以加加Q群:327360708 ,大家一起探讨。
更多内容,敬请观注博客:http://www.cnblogs.com/EmptyFS/
1、如图先创建菜单列表与编辑页面
#region 列表属性绑定 #region 列表按键绑定——修改列表控件属性 /// <summary> /// 列表按键绑定——修改列表控件属性 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void Grid1_PreRowDataBound(object sender, FineUI.GridPreRowEventArgs e) { //绑定是否显示状态列 GridRow gr = Grid1.Rows[e.RowIndex]; if (((System.Data.DataRowView)(gr.DataItem)).Row.Table.Rows[e.RowIndex][MenuInfoTable.IsDisplay].ToString() == "0") { var lbf = Grid1.FindColumn("IsDisplay") as LinkButtonField; lbf.Icon = Icon.BulletCross; lbf.CommandArgument = "1"; } else { var lbf = Grid1.FindColumn("IsDisplay") as LinkButtonField; lbf.Icon = Icon.BulletTick; lbf.CommandArgument = "0"; } //绑定是否菜单列 if (((System.Data.DataRowView)(gr.DataItem)).Row.Table.Rows[e.RowIndex][MenuInfoTable.IsMenu].ToString() == "0") { var lbf = Grid1.FindColumn("IsMenu") as LinkButtonField; lbf.Icon = Icon.BulletCross; lbf.CommandArgument = "1"; } else { var lbf = Grid1.FindColumn("IsMenu") as LinkButtonField; lbf.Icon = Icon.BulletTick; lbf.CommandArgument = "0"; } //绑定是否编辑列 var lbfEdit = Grid1.FindColumn("ButtonEdit") as LinkButtonField; lbfEdit.Text = "编辑"; //lbfEdit.Enabled = MenuInfoBll.GetInstence().CheckControlPower(this, "ButtonEdit"); } #endregion #region Grid点击事件 /// <summary> /// Grid点击事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void Grid1_RowCommand(object sender, FineUI.GridCommandEventArgs e) { GridRow gr = Grid1.Rows[e.RowIndex]; //获取主键ID object id = gr.DataKeys[0]; switch (e.CommandName) { case "IsDisplay": //更新状态 MenuInfoBll.GetInstence().UpdateIsDisplay(this, ConvertHelper.Cint0(id), ConvertHelper.Cint0(e.CommandArgument)); //重新加载 LoadData(); break; case "IsMenu": //更新状态 MenuInfoBll.GetInstence().UpdateIsMenu(this, ConvertHelper.Cint0(id), ConvertHelper.Cint0(e.CommandArgument)); //重新加载 LoadData(); break; case "ButtonEdit": Window1.IFrameUrl = "MenuInfoEdit.aspx?Id=" + id + "&" + MenuInfoBll.GetInstence().PageUrlEncryptStringNoKey(id + ""); Window1.Hidden = false; break; } } #endregion #endregion
View Code
而更新状态的函数MenuInfoBll.GetInstence().UpdateIsDisplay()、MenuInfoBll.GetInstence().UpdateIsMenu(),我们模板里已经生成了,直接调用即可
最后一列编辑按键,这个根据需要可以放到顶部的工具条里(在前面代码大家可以看到我将其注释了),也可以放到这里来,而放到这里的话,则需要在表格绑定的代码中实现
由于整个权限模块未开发出来,所以我先将按键的权限判断注释掉了(//lbfEdit.Enabled = MenuInfoBll.GetInstence().CheckControlPower(this, "ButtonEdit");)
在Grid点击事件中,打开隐藏的编辑窗口
//打开编辑窗口
Window1.IFrameUrl = "MenuInfoEdit.aspx?Id=" + id + "&" + MenuInfoBll.GetInstence().PageUrlEncryptStringNoKey(id + "");
Window1.Hidden = false; //显示窗口
在上面的Url链接中,我们需要传递两个参数,一个是将要编辑的记录Id,一个是页面加密处理参数,通过MenuInfoBll.GetInstence().PageUrlEncryptStringNoKey(id + "")函数来生成对应的页面加密参数,系统在对密钥进行识别处理时,会按顺序默认对Id、pid、ParentId、Key这几个值做为密钥生成值进行识别,具体大家自行研究一下吧。
而对于工具栏中的按键实现,添加新记录对应的是Add()函数、编辑记录对应的是Edit()函数、删除记录对应的是Delete(),当然工具栏中按键的命名要求必须同上面那几个一样,具体实现这里就不再一一细说,大家直接看代码吧。
由于时间关系,编辑页面代码就不进行解说,大家自己进行研究吧,下面上一张编辑页面运行后的图片
![](http://images.cnitblog.com/i/129385/201406/201408049572016.png)
另外,为了由于权限模块未完成,所以将相关的权限判断都注释掉了,等后面完善后再启用。
本次更新,除了修改一些小问题外,也修改了CommonBll.cs类的添加用户访问页面记录函数,以及自定义类UseLogBll.cs类的添加用户操作日志函数,让用户访问页面记录运行起来,当然这个表记录的不至这些访问内容,它还会将用户的增、删、查、改等所有操作都记录下来,下面看看效果图(这个函数会将用户登陆进系统后每一步访问都记录下来,这个要求是来自以前的公司老总,当时做了一个OA系统公司自己用,他看了后就说:OA开发后,如果大家都不登陆不使用那有等于没有,能不能实现通过后端查看,知道大家有没有使用。再然后就多了这个功能,呵呵)
![](http://images.cnitblog.com/i/129385/201406/201120439421463.png)
本章内容看起来比较乱,大家最好直接运行解决方案代码,在浏览器中运行查看效果,再结合代码查看可能会容易理解,还有一点要补充的是,本解决方案不包含extjs代码,需要大家自行下载放到根目录里
Web层后端权限模块菜单管理.rar
版权声明:
本文由AllEmpty原创并发布于博客园,欢迎转载,未经本人同意必须保留此段声明,且在文章页面明显位置给出原文链接,[b]否则保留追究法律责任的权利。如有问题,可以通过1654937@qq.com 联系我,非常感谢。[/b]
发表本编内容,只要主为了和大家共同学习共同进步,有兴趣的朋友可以加加Q群:327360708 ,大家一起探讨。
更多内容,敬请观注博客:http://www.cnblogs.com/EmptyFS/
相关文章推荐
- 从零开始编写自己的C#框架(19)——Web层后端权限模块
- 从零开始编写自己的C#框架(17)——Web层后端首页
- 从零开始编写自己的C#框架(17)——Web层后端首页
- 从零开始编写自己的C#框架(15)——Web层后端登陆功能
- 从零开始编写自己的C#框架(3)——开发规范
- 从零开始编写自己的C#框架(9)——数据库设计与创建
- 从零开始编写自己的C#框架(3)——开发规范
- 从零开始编写自己的C#框架(7)——需求分析
- 从零开始编写自己的C#框架(4)——文档编写说明
- 从零开始编写自己的C#框架(4)——文档编写说明
- 从零开始编写自己的C#框架(13)——T4模板在逻辑层中的应用(二)
- 从零开始编写自己的C#框架(10)——项目实施计划与甘特图
- 从零开始编写自己的C#框架(9)——数据库设计与创建
- 从零开始编写自己的C#框架(12)——T4模板在逻辑层中的应用(一)(附源码)
- C#.NET控制模块菜单的访问权限(走火入魔通用权限管理系统组件在信息管理系统中的用处)
- 从零开始编写自己的C#框架(8)——后台管理系统功能设计
- 从零开始编写自己的C#框架(10)——项目实施计划与甘特图
- 从零开始编写自己的C#框架(5)——三层架构介绍
- 从零开始编写自己的C#框架(3)——开发规范(转)
- 【转】从零开始编写自己的C#框架(7)——需求分析