using HighWayIot.Log4net; using HighWayIot.Repository.domain; using HighWayIot.Repository.service; using HighWayIot.Winform.Business; using HighWayIot.Winform.UserControlPages.SysConfigPages; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace HighWayIot.Winform.UserControlPages { public partial class RoleConfigPage : UserControl { SysUserRoleService roleService = new SysUserRoleService(); private static LogHelper logger = LogHelper.Instance; /// /// 数据库实体类列表 /// private List List = new List(); /// /// XML读取类 /// XmlUtil xmlUtil = new XmlUtil(); /// /// 页面规则偏移量配置 /// List ConfigList; public RoleConfigPage() { InitializeComponent(); Init(); } private void Init() { RoleDataGridView.AutoGenerateColumns = false; List = roleService.GetRoleInfos(); ConfigList = xmlUtil.ConfigReader(); //设置列数量 RoleDataGridView.ColumnCount = ConfigList.Count + 1; //设置列头名称 RoleDataGridView.Columns[0].Name = "RoleName"; RoleDataGridView.Columns[0].DataPropertyName = "RoleName"; RoleDataGridView.Columns[0].HeaderText = "角色名"; RoleDataGridView.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.NotSet; RoleDataGridView.Columns[0].Width = 100; for (int i = 0; i < ConfigList.Count; i++) { RoleDataGridView.Columns[i + 1].Name = ConfigList[i].PageName; RoleDataGridView.Columns[i + 1].DataPropertyName = ConfigList[i].PageName; RoleDataGridView.Columns[i + 1].HeaderText = ConfigList[i].PageName; RoleDataGridView.Columns[i + 1].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; } GridViewRefresh(); } private void UpdateRole_Click(object sender, EventArgs e) { //写的很烂 int index = RoleDataGridView.CurrentRow.Index; //前端数据顺序绑定的时候就是数据库的顺序,所以可以这么写。 RoleUpdateForm form = new RoleUpdateForm(roleService, List[index]); form.ShowDialog(); List = roleService.GetRoleInfos(); GridViewRefresh(); } private void AddRole_Click(object sender, EventArgs e) { RoleAddForm form = new RoleAddForm(roleService); form.ShowDialog(); List = roleService.GetRoleInfos(); GridViewRefresh(); } private void DeleteRole_Click(object sender, EventArgs e) { //写的很烂 int index = RoleDataGridView.CurrentRow.Index; if (MessageBox.Show($"确认要删除{List[index].RoleName}该角色信息?", "确定?", MessageBoxButtons.OKCancel) == DialogResult.OK) { //前端数据顺序绑定的时候就是数据库的顺序,所以可以这么写。 roleService.DeleteRoleInfoById(List[index].Id); List = roleService.GetRoleInfos(); GridViewRefresh(); } } /// /// 刷新列 /// private void GridViewRefresh() { RoleDataGridView.Rows.Clear(); //用户名部分初始化赋值 for (int i = 0; i < List.Count; i++) { RoleDataGridView.Rows.Add(); RoleDataGridView.Rows[i].Cells[0].Value = List[i].RoleName; } //权限部分初始化赋值 for (int rowIndex = 0; rowIndex < List.Count; rowIndex++) { char[] roleChars = List[rowIndex].RoleSet.ToCharArray(); for (int columnIndex = 1; columnIndex < RoleDataGridView.Columns.Count; columnIndex++) { // 获取当前单元格 DataGridViewCell cell = RoleDataGridView.Rows[rowIndex].Cells[columnIndex]; // 获取列名 string columnName = RoleDataGridView.Columns[columnIndex].Name; try { RoleDataGridView.Rows[rowIndex].Cells[columnIndex].Value = roleChars[ConfigList.Where(x => x.PageName == columnName).First().RoleIndex] == '1' ? "√" : ""; } catch (Exception ex) { logger.Error("用户角色初始化发生错误,请检查Configuration.xml", ex); } } } } } }