198 lines
6.4 KiB
C#
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;
|
|
|
|
}
|
|
|
|
|
|
}
|
|
}
|