tijian_jichuang/Code/BasicSettings/frmJueSeCaiDanWeiHu.cs
2025-02-20 11:54:48 +08:00

198 lines
6.4 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using EAS.Services;
using SOH.Kernel;
using SOH.Window;
using SOH.BLL;
using SOH.Entities;
using SOH.Data;
namespace SOH.BasicSettings
{
[ModuleAttribute(ModuleID = "0BF9FD6D-F265-49EB-99E6-0169D27E99FB", ModuleName = "角色菜单维护")]
public partial class frmJueSeCaiDanWeiHu : baseChildForm
{
public frmJueSeCaiDanWeiHu()
{
InitializeComponent();
}
private void frmJueSeCaiDanWeiHu_Load(object sender, EventArgs e)
{
myinit();
var service1 = ServiceContainer.GetService<IRole>();
List<Role> Ral = service1.GetRoles("");
roleBindingSource.DataSource = Ral;
}
private void myinit()
{
//throw new NotImplementedException();
var vser = ServiceContainer.GetService<BLL.IQuanXian>();
string ls = vser.getMunelist(8);
DataTable dt = Newtonsoft.Json.JsonConvert.DeserializeObject(ls, typeof(DataTable)) as DataTable;
if (dt.Rows.Count > 0)
{
dt.DefaultView.Sort = "px";
dt = dt.DefaultView.ToTable();
TreeNode tn = new TreeNode();
tn.Text = "顶级菜单";
tn.Tag = 0;
inittree(tn, dt);
tvcdlist.Nodes.Add(tn);
tvcdlist.ExpandAll();
}
ls = vser.getMunelist(1);
}
private void inittree(TreeNode tn, DataTable dt)
{
//throw new NotImplementedException();
foreach (DataRow dr in dt.Select("pid=" + tn.Tag.ToString()))
{
TreeNode tcn = new TreeNode(dr["cdname"].ToString());
tcn.Tag = dr["id"];
tn.Nodes.Add(tcn);
inittree(tcn, dt);
}
}
private bool m_SetClick = true;
private void SetSubNodeCheck(TreeNode p_TreeNode, bool p_SelectCheck)
{
m_SetClick = false;
foreach (TreeNode _SubNode in p_TreeNode.Nodes)
{
_SubNode.Checked = p_SelectCheck;
SetSubNodeCheck(_SubNode, p_SelectCheck);
}
}
private void SetParentCheck(TreeNode p_TreeNode)
{
if (p_TreeNode.Checked && p_TreeNode.Parent != null)
{
p_TreeNode.Parent.Checked = true;
SetParentCheck(p_TreeNode.Parent);
}
}
private void SetParentNotCheck(TreeNode p_TreeNode)
{
if (!p_TreeNode.Checked && p_TreeNode.Parent != null)
{
foreach (TreeNode _Node in p_TreeNode.Parent.Nodes)
{
if (_Node.Checked) return;
}
p_TreeNode.Parent.Checked = false;
SetParentNotCheck(p_TreeNode.Parent);
}
}
private void tvcdlist_AfterCheck(object sender, TreeViewEventArgs e)
{
// 禁用TreeView视图重绘的功能。
tvcdlist.BeginUpdate();
if (m_SetClick)
{
SetSubNodeCheck(e.Node, e.Node.Checked);
SetParentCheck(e.Node);
SetParentNotCheck(e.Node);
m_SetClick = true;
}
// 启用TreeView视图重绘的功能。
tvcdlist.EndUpdate();
}
private void button2_Click(object sender, EventArgs e)
{
dgqxdg(tvcdlist.Nodes, true);
}
private void button3_Click(object sender, EventArgs e)
{
dgqxdg(tvcdlist.Nodes, false);
}
private void button1_Click(object sender, EventArgs e)
{
dgSave(tvcdlist.Nodes);
var service = ServiceContainer.GetService<IRoleCD>();
OperationResult or = service.Save(al, Convert.ToInt32(dgvygList.Rows[dgvygList.CurrentRow.Index].Cells["idDataGridViewTextBoxColumn"].Value));
MessageBox.Show(or.Message);
al.Clear();
}
List<RoleCD> al = new List<RoleCD>();
//根据打钩保存数据
private void dgSave(TreeNodeCollection aNodes)
{
foreach (TreeNode iNode in aNodes)
{
if (iNode.Checked&&iNode.Text!="顶级菜单")
{
RoleCD czymodel = new RoleCD();
czymodel.id = ServiceContainer.GetService<IBasic>().GetMax(czymodel.DbTableName, 1);
czymodel.roleid = Convert.ToInt32(dgvygList.Rows[dgvygList.CurrentRow.Index].Cells["idDataGridViewTextBoxColumn"].Value.ToString());
czymodel.mid = Convert.ToInt32(iNode.Tag);
al.Add(czymodel);
}
if (iNode.Nodes.Count > 0)
{
dgSave(iNode.Nodes);
}
}
}
//复选框初始化
private void dgqxdg(TreeNodeCollection aNodes, bool f)
{
foreach (TreeNode iNode in aNodes)
{
iNode.Checked = f;
if (iNode.Nodes.Count > 0)
{
dgqxdg(iNode.Nodes, f);
}
}
}
//根据数据赋值复选框
private void dgfzdg(TreeNodeCollection aNodes, List<RoleCD> al)
{
foreach (TreeNode iNode in aNodes)
{
for (int i = 0; i < al.Count; i++)
{
if (al[i].mid.ToString() == iNode.Tag.ToString())
{
iNode.Checked = true;
}
}
if (iNode.Nodes.Count > 0)
{
dgfzdg(iNode.Nodes, al);
}
}
}
private void dgvygList_CellClick(object sender, DataGridViewCellEventArgs e)
{
dgqxdg(tvcdlist.Nodes, false);
var service = ServiceContainer.GetService<IRoleCD>();
List<RoleCD> al = service.GetListByRoleID(dgvygList.Rows[e.RowIndex].Cells["idDataGridViewTextBoxColumn"].Value.ToString());
tvcdlist.AfterCheck -= tvcdlist_AfterCheck;
dgfzdg(tvcdlist.Nodes, al);
tvcdlist.AfterCheck += tvcdlist_AfterCheck;
}
}
}