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(); List Ral = service1.GetRoles(""); roleBindingSource.DataSource = Ral; } private void myinit() { //throw new NotImplementedException(); var vser = ServiceContainer.GetService(); 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(); OperationResult or = service.Save(al, Convert.ToInt32(dgvygList.Rows[dgvygList.CurrentRow.Index].Cells["idDataGridViewTextBoxColumn"].Value)); MessageBox.Show(or.Message); al.Clear(); } List al = new List(); //根据打钩保存数据 private void dgSave(TreeNodeCollection aNodes) { foreach (TreeNode iNode in aNodes) { if (iNode.Checked&&iNode.Text!="顶级菜单") { RoleCD czymodel = new RoleCD(); czymodel.id = ServiceContainer.GetService().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 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(); List al = service.GetListByRoleID(dgvygList.Rows[e.RowIndex].Cells["idDataGridViewTextBoxColumn"].Value.ToString()); tvcdlist.AfterCheck -= tvcdlist_AfterCheck; dgfzdg(tvcdlist.Nodes, al); tvcdlist.AfterCheck += tvcdlist_AfterCheck; } } }