1
0
Fork 0
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

149 lines
5.0 KiB
C#

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;
/// <summary>
/// 数据库实体类列表
/// </summary>
private List<SysRoleEntity> List = new List<SysRoleEntity>();
/// <summary>
/// XML读取类
/// </summary>
XmlUtil xmlUtil = new XmlUtil();
/// <summary>
/// 页面规则偏移量配置
/// </summary>
List<RoleConfig> 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();
}
}
/// <summary>
/// 刷新列
/// </summary>
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);
}
}
}
}
}
}