StableVersion4.3/HL_FristAidPlatform_SYS/Form_MenuMain.cs

531 lines
20 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using DevExpress.XtraEditors;
using DevExpress.XtraGrid.Views.Grid.ViewInfo;
using HL_FristAidPlatform_DTO;
using HL_FristAidPlatform_Public;
using System;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
namespace HL_FristAidPlatform_SYS
{
public partial class Form_MenuMain : XtraForm
{
#region 变量
/// <summary>
/// 操作标志 1:新增 2:修改
/// </summary>
public int Flag = 1;
/// <summary>
/// 当前图标文件名
/// </summary>
private string Cur_Icon = string.Empty;
/// <summary>
/// 当前图标(转换成二进制之后数据)
/// </summary>
private string Cur_PicData = string.Empty;
/// <summary>
/// 当前图片的位图源
/// </summary>
private Bitmap Cur_ImageBitmap;
/// <summary>
/// 当前页
/// </summary>
public int curPage = 1;
/// <summary>
/// 每页大小
/// </summary>
public int pageSize = 100;
/// <summary>
/// 所有记录条数
/// </summary>
public int totalNumber = 0;
#endregion
#region 分页实现
public void ExportEvents(bool singlePage)//单页,所有
{
//导出GridControl代码写在这。
}
public void RefreshGridList()
{
FillGridListCtrlQuery(curPage);//自己实现FillGridListCtrlQuery函数。
}
/// <summary>
/// 绑定数据源
/// </summary>
/// <returns></returns>
private void FillGridListCtrlQuery(int curPage)
{
try
{
string whereStr = string.Empty;
string Key = PublicClass.ToString(txt_Key.Text, "");
if (!string.IsNullOrEmpty(Key))
{
whereStr += "&keyWord=" + Key;
}
string systemModuleID = PublicClass.ToString(LUEdit_SelSystemModule.EditValue, "");
if (!string.IsNullOrEmpty(systemModuleID))
{
whereStr += "&systemModuleID=" + systemModuleID;
}
DataTable ResultDT = DBHelpClass.Get(string.Format("api/admin/T_SYS_Menu?pageIndex={0}&pageSize={1}{2}", curPage, pageSize, whereStr));
grid_Menu.DataSource = ResultDT;//显示分页结果
totalNumber = DBHelpClass.TotalNumber;
userControlForPage.RefreshPager(pageSize, totalNumber, curPage);//更新分页控件显示。
}
catch (Exception ex)
{
PublicClass.WriteErrorLog(this.Text, "绑定数据源:\r\n" + ex);
}
}
private void MyPagerEvents(int curPage, int pageSize)
{
this.curPage = curPage;
this.pageSize = pageSize;
FillGridListCtrlQuery(curPage);
}
private void userControlForPage_exportEvents(bool singlePage)
{
userControlForPage.exportEvents += ExportEvents;
}
private void userControlForPage_myPagerEvents(int curPage, int pageSize)
{
userControlForPage.myPagerEvents += MyPagerEvents;
}
#endregion
public Form_MenuMain()
{
InitializeComponent();
}
/// <summary>
/// 窗体加载
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Form_MenuMain_Load(object sender, EventArgs e)
{
BindSystemModule(1);
RefreshGridList();
//详情控件初始化
PublicClass.EnabledControl(this.groupM_Detail, true, false);
//筛选条件中所属模块默认当前选择的系统
LUEdit_SelSystemModule.EditValue = PublicClassForDataBase.Config104;
}
/// <summary>
/// 窗体快捷键注册
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Form_MenuMain_KeyDown(object sender, KeyEventArgs e)
{
//同时按下 Ctrl+S 时执行保存方法
if (e.KeyCode == Keys.S && e.Control)
{
btn_Save_ItemClick(null, null);
}
}
private void txt_Key_TextChanged(object sender, EventArgs e)
{
//列表分页数据绑定
RefreshGridList();
}
/// <summary>
/// 查询
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_Select_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
//列表分页数据绑定
RefreshGridList();
}
private void LUEdit_SelSystemModule_EditValueChanged(object sender, EventArgs e)
{
//列表分页数据绑定
RefreshGridList();
}
/// <summary>
/// 新增
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_Insert_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
BindSystemModule(2);
PublicClass.EnabledControl(this.groupM_Detail, false, true);
//图片置空
Cur_Icon = string.Empty;
Cur_PicData = string.Empty;
btn_Delete.Enabled = false;
ckb_DeleteFlag.Checked = true;//新增时默认启用
pictureEdit_Icon.Image = null;
Flag = 1;
}
/// <summary>
/// 修改
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_Update_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
BindSystemModule(2);
BindDetail();
PublicClass.EnabledControl(this.groupM_Detail, false, false);
btn_Delete.Enabled = false;
}
/// <summary>
/// 删除
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_Delete_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
try
{
#region 删除
if (grv_Menu.DataRowCount > 0)
{
int selectRow = grv_Menu.GetSelectedRows()[0];
int ID = Convert.ToInt32(grv_Menu.GetRowCellValue(selectRow, "ID").ToString());
string MenuName = grv_Menu.GetRowCellValue(selectRow, "MenuName").ToString();
if (ID == 0)
{
XtraMessageBox.Show("请先选择要删除的菜单!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
if (XtraMessageBox.Show(string.Format("确定要删除菜单【{0}】?", MenuName), "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
List<T_SYS_MenuDTO> list = new List<T_SYS_MenuDTO>();
T_SYS_MenuDTO model = new T_SYS_MenuDTO();
string Url = "api/admin/T_SYS_Menu/LogicalDelete";
model.ID = ID;
model.DeleteFlag = 1;
list.Add(model);
//初始化两个工厂
ClientFactory<T_SYS_MenuDTO> httpClient = new HttpClientFactory<T_SYS_MenuDTO>();
Client<T_SYS_MenuDTO> client = httpClient.VisitFactory();
//访问
ListEntity<T_SYS_MenuDTO> t = client.Post(Url, list);
if (t.Success)
{
XtraMessageBox.Show("删除菜单成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
PublicClass.EnabledControl(this.groupM_Detail, true, false);
Flag = 0;
//列表分页数据绑定
RefreshGridList();
}
else
{
XtraMessageBox.Show("删除菜单失败,请稍后重试!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
#endregion
}
catch (Exception ex)
{
PublicClass.WriteErrorLog(this.Text, "删除:\r\n" + ex);
}
}
/// <summary>
/// 保存
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_Save_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
try
{
#region 保存
if (string.IsNullOrEmpty(txt_MenuName.Text.ToString().Trim()))
{
XtraMessageBox.Show("菜单名称不能为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
txt_MenuName.Focus();
return;
}
if (PublicClass.ToString(LUEdit_SystemModule.EditValue, "-1") == "-1")
{
XtraMessageBox.Show("请选择所属系统模块!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
LUEdit_SystemModule.Focus();
return;
}
List<T_SYS_MenuDTO> list = new List<T_SYS_MenuDTO>();
T_SYS_MenuDTO model = new T_SYS_MenuDTO();
string Url = string.Empty;
if (Flag == 1)
{
Url = "api/admin/T_SYS_Menu";
model.GUID = Guid.NewGuid().ToString();
}
else
{
Url = "api/admin/T_SYS_Menu/Update";
model.ID = Convert.ToInt32(txt_MenuName.Tag.ToString());
model.GUID = txt_ShortName.Tag.ToString();
}
//0为顶级菜单编号
int ParentID = PublicClass.ToInt32(LUEdit_Parent.EditValue, -1);
model.ParentID = ParentID == -1 ? 0 : ParentID;
model.SystemModuleID = PublicClass.ToInt64(LUEdit_SystemModule.EditValue, 0);
model.MenuName = txt_MenuName.Text.ToString().Trim();
model.ShortName = txt_ShortName.Text.ToString().Trim();
model.DLLName = txt_DLLName.Text.ToString().Trim();
model.FunctionName = txt_FunctionName.Text.ToString().Trim();
model.Icon = Cur_Icon;
model.IconData = Convert.FromBase64String(Cur_PicData);
model.OrderBy = Convert.ToInt32(txt_OrderBy.Text.ToString().Trim() == "" ? "0" : txt_OrderBy.Text.ToString().Trim());
model.DeleteFlag = ckb_DeleteFlag.Checked == true ? 0 : 1;
list.Add(model);
//初始化两个工厂
ClientFactory<T_SYS_MenuDTO> httpClient = new HttpClientFactory<T_SYS_MenuDTO>();
Client<T_SYS_MenuDTO> client = httpClient.VisitFactory();
//访问
ListEntity<T_SYS_MenuDTO> t = client.Post(Url, list);
if (t.Success)
{
XtraMessageBox.Show("保存菜单信息成功!\r\n如果您需要使用该菜单功能请您重新登录系统", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
PublicClass.EnabledControl(this.groupM_Detail, true, false);
Flag = 0;
//列表分页数据绑定
RefreshGridList();
btn_Delete.Enabled = true;
//定位
PublicClass.LocationForGridView(grv_Menu, model.GUID, 1);
}
else
{
XtraMessageBox.Show("保存失败,请稍后重试!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
#endregion
}
catch (Exception ex)
{
PublicClass.WriteErrorLog(this.Text, "保存:\r\n" + ex);
}
}
/// <summary>
/// 退出
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_Exit_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
Close();
}
#region 方法
/// <summary>
/// 绑定详情
/// </summary>
private void BindDetail()
{
try
{
#region 绑定详情
if (grv_Menu.DataRowCount > 0)
{
int selectRow = grv_Menu.GetSelectedRows()[0];
long ID = Convert.ToInt64(grv_Menu.GetRowCellValue(selectRow, "ID").ToString());
DataTable DetailDT = DBHelpClass.GetDataRow(string.Format("api/admin/T_SYS_Menu/{0}", ID));
if (DetailDT != null && DetailDT.Rows.Count > 0)
{
Flag = 2;//修改标识
txt_MenuName.Tag = DetailDT.Rows[0]["ID"].ToString();
txt_MenuName.Text = DetailDT.Rows[0]["MenuName"].ToString();
string ParentID = PublicClass.ToString(DetailDT.Rows[0]["ParentID"], "0");
LUEdit_Parent.EditValue = ParentID == "0" ? "-1" : ParentID;
LUEdit_SystemModule.EditValue = PublicClass.ToString(DetailDT.Rows[0]["SystemModuleID"], "-1");
txt_ShortName.Tag = DetailDT.Rows[0]["GUID"].ToString();
txt_ShortName.Text = DetailDT.Rows[0]["ShortName"].ToString();
txt_DLLName.Text = DetailDT.Rows[0]["DLLName"].ToString();
txt_FunctionName.Text = DetailDT.Rows[0]["FunctionName"].ToString();
#region 图片
if (!string.IsNullOrEmpty(PublicClass.ToString(DetailDT.Rows[0]["IconData"], "")))
{
MemoryStream ms = new MemoryStream(Convert.FromBase64String(DetailDT.Rows[0]["IconData"].ToString()));
Image img = Image.FromStream(ms);
Cur_ImageBitmap = new Bitmap(img, pictureEdit_Icon.Width, pictureEdit_Icon.Height);
pictureEdit_Icon.Image = Cur_ImageBitmap;
Cur_Icon = DetailDT.Rows[0]["Icon"].ToString();
Cur_PicData = PublicClass.Png2String(Cur_ImageBitmap);
}
else
{
pictureEdit_Icon.Image = null;
Cur_ImageBitmap = null;
Cur_PicData = "";
}
#endregion
txt_OrderBy.Text = DetailDT.Rows[0]["OrderBy"].ToString();
ckb_DeleteFlag.Checked = DetailDT.Rows[0]["DeleteFlag"].ToString().Trim() == "0" ? true : false;
}
}
#endregion
}
catch (Exception ex)
{
PublicClass.WriteErrorLog(this.Text, "绑定详情:\r\n" + ex);
}
}
/// <summary>
/// 绑定上级菜单
/// </summary>
private void BindParent(string systemModuleID)
{
try
{
DataTable ResultDT = DBHelpClass.Get(string.Format("api/admin/T_SYS_Menu/GetListBySystemModuleID?systemModuleID={0}", systemModuleID));
PublicClass.SetLookUpList(ref LUEdit_Parent, ResultDT, 0, 3, true, "顶级菜单");
}
catch (Exception ex)
{
PublicClass.WriteErrorLog(this.Text, "绑定数据源:\r\n" + ex);
}
}
/// <summary>
/// 绑定所属系统模块
/// </summary>
/// <param name="flag">绑定标记1:绑定查询2:绑定详情</param>
private void BindSystemModule(int flag)
{
try
{
DataTable ResultDT = DBHelpClass.Get("/api/admin/T_SYS_SystemModule?isOpen=0&deleteFlag=0");
switch (flag)
{
case 1:
PublicClass.SetLookUpList(ref LUEdit_SelSystemModule, ResultDT, 3, 5, false);
break;
case 2:
PublicClass.SetLookUpList(ref LUEdit_SystemModule, ResultDT, 3, 5, false);
break;
default:
break;
}
}
catch (Exception ex)
{
PublicClass.WriteErrorLog(this.Text, "绑定所属系统模块:\r\n" + ex);
}
}
#endregion
/// <summary>
/// 单击列表绑定详情
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void gridC_Menu_MouseClick(object sender, System.Windows.Forms.MouseEventArgs e)
{
GridHitInfo hi = grv_Menu.CalcHitInfo(new Point(e.X, e.Y));
//单击数据行
if (hi.InRow)//单击的是列头 hi.InColumn
{
PublicClass.EnabledControl(this.groupM_Detail, true, false);
BindDetail();
}
}
/// <summary>
/// 选择图片
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_SelFlie_Click(object sender, EventArgs e)
{
try
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "Image Files(*.PNG)|*.PNG;|All files(*.*)|*.*";
ofd.RestoreDirectory = true;
if (ofd.ShowDialog() == DialogResult.OK)
{
FileInfo file = new FileInfo(ofd.FileName);
if (file.Extension == ".png" || file.Extension == ".PNG")
{
string Cur_PicAddress = ofd.FileName;
Image imge = Image.FromFile(Cur_PicAddress);
Cur_ImageBitmap = new Bitmap(imge, pictureEdit_Icon.Width, pictureEdit_Icon.Height);
pictureEdit_Icon.Image = Cur_ImageBitmap;
Cur_Icon = file.Name;
//所选图标转换成二进制
Cur_PicData = PublicClass.Png2String(Cur_ImageBitmap);
}
else
{
XtraMessageBox.Show("为确保系统美观度,请上传.png格式的图标", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
catch (Exception ex)
{
PublicClass.WriteErrorLog(this.Text, "选择图片:\r\n" + ex);
}
}
/// <summary>
/// 筛选上级菜单
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void LUEdit_SystemModule_EditValueChanged(object sender, EventArgs e)
{
string SystemModuleID = PublicClass.ToString(LUEdit_SystemModule.EditValue, "-1");
if (SystemModuleID != "-1")
{
//绑定上级菜单
BindParent(SystemModuleID);
}
}
}
}