从零开始编写自己的C#框架(18)——Web层后端权限模块——菜单管理
2020-12-13 16:23
阅读:595
YPE html>
标签:style class blog code http tar
从本章开始,主要讲解的是页面中对框架相关功能的调用方法,比如列表页面(又分为有层次感列表和普通列表)、编辑页面、多标签页面等,只要熟悉了这些函数的使用方法,那么开发起来就会很便捷了。
1、如图先创建菜单列表与编辑页面
MenuInfoList.aspx
1 "C#" AutoEventWireup="true" CodeBehind="MenuInfoList.aspx.cs" Inherits="Solution.Web.Managers.WebManage.Systems.Powers.MenuInfoList" %> 2 3 span>"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 4 "http://www.w3.org/1999/xhtml"> 5"Head1" runat="server"> 665 66菜单(页面)列表 7 8 9
MenuInfoList.aspx.cs
1 using System; 2 using System.Collections.Generic; 3 using DotNet.Utilities; 4 using FineUI; 5 using Solution.DataAccess.DataModel; 6 using Solution.Logic.Managers; 7 using Solution.Web.Managers.WebManage.Application; 8 9 namespace Solution.Web.Managers.WebManage.Systems.Powers 10 { 11 public partial class MenuInfoList : PageBase 12 { 13 #region Page_Load 14 protected void Page_Load(object sender, EventArgs e) 15 { 16 if (!IsPostBack) 17 { 18 //绑定下拉列表 19 MenuInfoBll.GetInstence().BandDropDownList(this, ddlParentId); 20 21 LoadData(); 22 } 23 } 24 #endregion 25 26 #region 接口函数,用于UI页面初始化,给逻辑层对象、列表等对象赋值 27 public override void Init() 28 { 29 //逻辑对象赋值 30 bll = MenuInfoBll.GetInstence(); 31 //表格对象赋值 32 grid = Grid1; 33 } 34 #endregion 35 36 #region 加载数据 37 ///读取数据 38 public override void LoadData() 39 { 40 //设置排序 41 if (sortList == null) 42 { 43 Sort(); 44 } 45 46 //绑定Grid表格 47 bll.BindGrid(Grid1, InquiryCondition(), sortList); 48 } 49 50 /// 51 /// 查询条件 52 /// 53 /// 54 private int InquiryCondition() 55 { 56 int value = 0; 57 58 //选择菜单 59 if (ddlParentId.SelectedValue != "0") 60 { 61 value = ConvertHelper.Cint0(ddlParentId.SelectedValue); 62 } 63 return value; 64 } 65 66 #region 排序 67 /// 68 /// 页面表格绑定排序 69 /// 70 public void Sort() 71 { 72 //设置排序 73 sortList = new Liststring>(); 74 sortList.Add(MenuInfoTable.Depth + " asc"); 75 sortList.Add(MenuInfoTable.Sort + " asc"); 76 } 77 #endregion 78 79 #endregion 80 81 #region 列表属性绑定 82 83 #region 列表按键绑定——修改列表控件属性 84 /// 85 /// 列表按键绑定——修改列表控件属性 86 /// 87 /// 88 /// 89 protected void Grid1_PreRowDataBound(object sender, FineUI.GridPreRowEventArgs e) 90 { 91 //绑定是否显示状态列 92 GridRow gr = Grid1.Rows[e.RowIndex]; 93 if (((System.Data.DataRowView)(gr.DataItem)).Row.Table.Rows[e.RowIndex][MenuInfoTable.IsDisplay].ToString() == "0") 94 { 95 var lbf = Grid1.FindColumn("IsDisplay") as LinkButtonField; 96 lbf.Icon = Icon.BulletCross; 97 lbf.CommandArgument = "1"; 98 } 99 else 100 { 101 var lbf = Grid1.FindColumn("IsDisplay") as LinkButtonField; 102 lbf.Icon = Icon.BulletTick; 103 lbf.CommandArgument = "0"; 104 } 105 106 //绑定是否菜单列 107 if (((System.Data.DataRowView)(gr.DataItem)).Row.Table.Rows[e.RowIndex][MenuInfoTable.IsMenu].ToString() == "0") 108 { 109 var lbf = Grid1.FindColumn("IsMenu") as LinkButtonField; 110 lbf.Icon = Icon.BulletCross; 111 lbf.CommandArgument = "1"; 112 } 113 else 114 { 115 var lbf = Grid1.FindColumn("IsMenu") as LinkButtonField; 116 lbf.Icon = Icon.BulletTick; 117 lbf.CommandArgument = "0"; 118 } 119 120 //绑定是否编辑列 121 var lbfEdit = Grid1.FindColumn("ButtonEdit") as LinkButtonField; 122 lbfEdit.Text = "编辑"; 123 //lbfEdit.Enabled = MenuInfoBll.GetInstence().CheckControlPower(this, "ButtonEdit"); 124 } 125 #endregion 126 127 #region Grid点击事件 128 /// 129 /// Grid点击事件 130 /// 131 /// 132 /// 133 protected void Grid1_RowCommand(object sender, FineUI.GridCommandEventArgs e) 134 { 135 GridRow gr = Grid1.Rows[e.RowIndex]; 136 //获取主键ID 137 object id = gr.DataKeys[0]; 138 139 switch (e.CommandName) 140 { 141 case "IsDisplay": 142 //更新状态 143 MenuInfoBll.GetInstence().UpdateIsDisplay(this, ConvertHelper.Cint0(id), ConvertHelper.Cint0(e.CommandArgument)); 144 //重新加载 145 LoadData(); 146 147 break; 148 case "IsMenu": 149 //更新状态 150 MenuInfoBll.GetInstence().UpdateIsMenu(this, ConvertHelper.Cint0(id), ConvertHelper.Cint0(e.CommandArgument)); 151 //重新加载 152 LoadData(); 153 154 break; 155 case "ButtonEdit": 156 Window1.IFrameUrl = "MenuInfoEdit.aspx?Id=" + id + "&" + MenuInfoBll.GetInstence().PageUrlEncryptStringNoKey(id + ""); 157 Window1.Hidden = false; 158 159 break; 160 } 161 } 162 #endregion 163 164 #endregion 165 166 #region 添加新记录 167 /// 168 /// 添加新记录 169 /// 170 public override void Add() 171 { 172 Window1.IFrameUrl = "MenuInfoEdit.aspx?" + MenuInfoBll.GetInstence().PageUrlEncryptString(); 173 Window1.Hidden = false; 174 } 175 #endregion 176 177 #region 编辑记录 178 /// 179 /// 编辑记录 180 /// 181 public override void Edit() 182 { 183 string id = GridViewHelper.GetSelectedKey(Grid1, true); 184 185 Window1.IFrameUrl = "MenuInfoEdit.aspx?Id=" + id + "&" + MenuInfoBll.GetInstence().PageUrlEncryptStringNoKey(id); 186 Window1.Hidden = false; 187 } 188 #endregion 189 190 #region 删除记录 191 /// 192 /// 删除记录 193 /// 194 /// 195 public override string Delete() 196 { 197 //获取要删除的ID 198 int id = ConvertHelper.Cint0(GridViewHelper.GetSelectedKey(Grid1, true)); 199 200 //如果没有选择记录,则直接退出 201 if (id == 0) 202 { 203 return "请选择要删除的记录。"; 204 } 205 206 try 207 { 208 //删除前判断一下 209 if (MenuInfoBll.GetInstence().Exist(x => x.ParentId == id)) 210 { 211 return "删除失败,本菜单下面存在子菜单,不能直接删除!"; 212 } 213 //删除前判断一下 214 if (PagePowerSignBll.GetInstence().Exist(x => x.MenuInfo_Id == id)) 215 { 216 return "删除失败,本菜单已绑定有页面控件权限标志,不能直接删除!"; 217 } 218 219 //删除记录 220 bll.Delete(this, id); 221 222 return "删除编号ID为[" + id + "]的数据记录成功。"; 223 } 224 catch (Exception e) 225 { 226 string result = "尝试删除编号ID为[" + id + "]的数据记录失败!"; 227 228 //出现异常,保存出错日志信息 229 CommonBll.WriteLog(result, e); 230 231 return result; 232 } 233 } 234 #endregion 235 236 } 237 }
先上列表页面运行效果图
2、列表页代码说明
在页面中,可以看到这条工具条,我们打开aspx页面,找到
1"toolBar" runat="server"> 2 3 4 5 6 "ButtonEdit" runat="server" Text="编辑" Icon="BulletEdit" OnClick="ButtonEdit_Click" 7 OnClientClick="if(!F(‘Panel1_Grid1‘).getSelectionModel().hasSelection()|| F(‘Panel1_Grid1‘).getSelectionModel().getCount()>=2){F.alert(‘您没有选择编辑项或只能选择一项进行编辑!‘); return false; }"> 8 --%> 9 10 11 14 15
在里面放置的按键都会在这里显示出来,这个标签的Id必须命名为toolBar,因为在PageBase这个父类的初始化函数OnInit中有下面这段代码,会自动为放在这里的按键进行权限判断处理,检查当前用户是否有对应按键的操作权限,没有操作权限的按键自动禁用掉,这样的话我们在开发时就不用为这些按键权限一个个进行赋值,做这么多麻烦的操作了
(灰白色的为已禁用按键)&
上一篇:python环境搭建
下一篇:C语言备忘录——static
文章来自:搜素材网的编程语言模块,转载请注明文章出处。
文章标题:从零开始编写自己的C#框架(18)——Web层后端权限模块——菜单管理
文章链接:http://soscw.com/essay/36081.html
文章标题:从零开始编写自己的C#框架(18)——Web层后端权限模块——菜单管理
文章链接:http://soscw.com/essay/36081.html
评论
亲,登录后才可以留言!