菜单列表

 

 代码

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;
using Xwy.WindowsFormsApp.Common;
using Xwy.WindowsFormsApp.DAL;
using Xwy.WindowsFormsApp.FModels;
using Xwy.WindowsFormsApp.Models;

namespace Xwy.WindowsFormsApp.sm
{
    public partial class FrmMenuList : Form
    {
        public FrmMenuList()
        {
            InitializeComponent();
        }
        MenuDAL menuDAL = new MenuDAL();

        private void FrmMenuList_Load(object sender, EventArgs e)
        {
            LoadCboParents();
            LoadMenuList();
        }

        /// <summary>
        /// 加载菜单列表
        /// </summary>
        private void LoadMenuList()
        {
            int selMenuId = cboParents.SelectedValue.ToString().GetInt();
            string mName = txtMenuName.Text.Trim();
            List<MenuInfoAllModel> menuList = menuDAL.GetMenuList(selMenuId, mName);
            dgvMenus.AutoGenerateColumns = false;
            dgvMenus.DataSource = menuList;

        }

        /// <summary>
        /// 下拉框绑定
        /// </summary>
        private void LoadCboParents()
        {
            DataTable dtParent = menuDAL.GetParentList();
            DataRow dr = dtParent.NewRow();
            dr["ParentId"] = 0;
            dr["MenuName"] = "请选择";
            //dtParent.Rows.Add(dr);//表的末尾添加
            dtParent.Rows.InsertAt(dr, 0);//插入到第一行
            cboParents.DataSource = dtParent;
            cboParents.DisplayMember = "MenuName";
            cboParents.ValueMember = "ParentId";
        }

        private void btnSearch_Click(object sender, EventArgs e)
        {
            LoadMenuList();
        }

        private void btnAdd_Click(object sender, EventArgs e)
        {
            ShowMenuInfoPage(0);
        }

        private void ShowMenuInfoPage(int menuId)
        {
            FrmMenuInfo frmMenuInfo = new FrmMenuInfo();
            frmMenuInfo.MdiParent = this.MdiParent;
            frmMenuInfo.Tag = new FInfoModel
            {
                FId = menuId,
                ReloadList = LoadMenuList
            };
            frmMenuInfo.Show();
        }

        private void dgvMenus_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            var currCell = dgvMenus.Rows[e.RowIndex].Cells[e.ColumnIndex] as DataGridViewLinkCell;
            string cellValue = currCell.FormattedValue.ToString().Trim();
            MenuInfoAllModel menuInfo = dgvMenus.Rows[e.RowIndex].DataBoundItem as MenuInfoAllModel;
            switch (cellValue)
            {
                case "修改":
                    ShowMenuInfoPage(menuInfo.MenuId);
                    break;
                case "删除":
                    //提示
                    if (MsgBoxHelper.MsgBoxConfirm("删除菜单", "您确定要删除该条菜单数据吗?删除菜单数据会同角色菜单关系数据一并删除?") == DialogResult.OK)
                    {
                        //调用删除方法
                        bool blDel=menuDAL.DeleteMenu(menuInfo.MenuId);
                        if(blDel)
                        {
                            MsgBoxHelper.MsgBoxShow("成功提示",$"菜单:{menuInfo.MenuName} 信息删除成功!");
                            LoadMenuList();
                        }
                        else
                        {
                            MsgBoxHelper.MsgErrorShow( $"菜单:{menuInfo.MenuName} 信息删除失败!");
                        }
                    }
                    break;
            }
        }
    }
}

菜单信息窗口

 

 代码

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;
using Xwy.WindowsFormsApp.Common;
using Xwy.WindowsFormsApp.DAL;
using Xwy.WindowsFormsApp.FModels;
using Xwy.WindowsFormsApp.Models;

namespace Xwy.WindowsFormsApp.sm
{
    public partial class FrmMenuInfo : Form
    {
        public FrmMenuInfo()
        {
            InitializeComponent();
        }
        MenuDAL menuDAL = new MenuDAL();
        FInfoModel fModel=null;
        int menuId=0;
        string oldName = "";//修改前的名称
        private void FrmMenuInfo_Load(object sender, EventArgs e)
        {
            LoadCboParents();//加载父级下拉框
            LoadCboFrmNames();//加载关联页面下拉框
            if (this.Tag != null)
            {
                fModel = this.Tag as FInfoModel;
                if (fModel != null)
                {
                    menuId = fModel.FId;
                }
            }
            if (menuId > 0)//修改页面加载
            {
                //加载菜单信息
                MenuInfoModel menuInfo = menuDAL.GetMenuInfoById(menuId);
                if (menuInfo != null)
                {
                    txtMenuName.Text = menuInfo.MenuName;
                    oldName = menuInfo.MenuName;
                    txtMKey.Text = menuInfo.MKey;
                    cboParent.SelectedValue = menuInfo.ParentId;
                    if (!string.IsNullOrEmpty(menuInfo.FrmName))
                    {
                        cboFrmName.SelectedValue = menuInfo.FrmName;
                    }

                }
            }
            else
            {
                txtMenuName.Clear();
                txtMKey.Clear();
            }
        }

        private void LoadCboFrmNames()
        {
            DataTable dtParent = menuDAL.GetAllMenu();
            DataRow dr=dtParent.NewRow();
            dr["MenuId"] = "0";
            dr["MenuName"] = "请选择";
            dtParent.Rows.InsertAt(dr, 0);
            cboParent.DataSource = dtParent;
            cboParent.DisplayMember = "MenuName";
            cboParent.ValueMember = "MenuId";

        }

        private void LoadCboParents()
        {
            string assName = this.GetType().Assembly.GetName().Name;
            Type[] types=this.GetType().Assembly.GetTypes();
            List<FormInfo> fList = new List<FormInfo>();
            foreach (Type t in types)
            {
                string tName = t.BaseType.Name;
                if (tName == "Form")
                {
                    FormInfo fi = new FormInfo();
                    Form f=(Form)Activator.CreateInstance(t);
                    fi.FName = t.FullName.Substring(assName.Length+1);
                    fi.FText = f.Text;
                    fList.Add(fi);
                    f.Dispose();
                }
            }
            FormInfo fi0 = new FormInfo()
            {
                FName = "",
                FText = "请选择"
            };
            fList.Insert(0, fi0);
            cboFrmName.DataSource = fList;
            cboFrmName.DisplayMember = "FText";
            cboFrmName.ValueMember = "FName";
            cboFrmName.SelectedIndex = 0;

        }

        private void btnOk_Click(object sender, EventArgs e)
        {
            //1 接收页面信息输入
            string mName = txtMenuName.Text.Trim();
            int parentId = cboParent.SelectedValue.GetInt();
            string frmName = cboFrmName.SelectedValue.ToString();
            string mKey = txtMKey.Text.Trim();


            //2 菜单名称是否为空
            if (string.IsNullOrEmpty(mName))
            {
                MsgBoxHelper.MsgErrorShow("菜单名称不能为空");
                txtMenuName.Focus();
                return;
            }

            //3 不能重名(判断是否存在)
            if (menuId == 0 || (menuId > 0 && oldName != mName))
            {
                //判断菜单名是否已经存在
                if (menuDAL.ExistMenuName(mName))
                {
                    MsgBoxHelper.MsgErrorShow("菜单名称已存在");
                    txtMenuName.Focus();
                    return;
                }
            }

            //4 封装信息
            MenuInfoModel menuInfo = new MenuInfoModel()
            { 
                MenuName=mName,
                ParentId=parentId,
                FrmName=frmName,
                MKey=mKey           
            };

            bool bl = false;
            //5 执行添加、修改
            if (menuId == 0)
            {
                //执行添加操作
                bl = menuDAL.AddMenuInfo(menuInfo);
            }
            else
            {
                //执行修改操作
                menuInfo.MenuId = menuId;
                bl = menuDAL.UpdateMenuInfo(menuInfo);

            }
            string actMsg = menuId > 0 ? "修改" : "添加";
            if (bl)
            {
                MsgBoxHelper.MsgBoxShow($"{actMsg}菜单", $"菜单:{mName}信息{actMsg}成功");
                //刷新列表数据
                fModel.ReloadList?.Invoke();
            }
            else
            {
                MsgBoxHelper.MsgErrorShow($"菜单:{mName}信息{actMsg}失败");
            }
        }

        private void btnClose_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}