| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337 |
- using Core.Mes.Client.Comm.Control;
- using Core.Mes.Client.Comm.Server;
- using Core.Mes.Client.Comm.Tool;
- using CoreFS.CA06;
- using Infragistics.Win.UltraWinGrid;
- using Infragistics.Win.UltraWinTree;
- using System;
- using System.Collections;
- using System.Data;
- using System.Drawing;
- using System.Windows.Forms;
- namespace Core.StlMes.Client.Qcm
- {
- public partial class FrmPermissionConfigure : FrmBase
- {
- public FrmPermissionConfigure()
- {
- InitializeComponent();
- ExceptionHelper.RegistException();
- }
- public override void ToolBar_Click(object sender, string ToolbarKey)
- {
- switch (ToolbarKey)
- {
- case "doQuery":
- doQuery();
- break;
- case "doSave":
- doSave();
- break;
- case "Close":
- this.Close();
- break;
- }
- }
- /// <summary>
- /// 树节点选中事件触发时,存储父节点id,防止当父节点选中项转移到其他焦点时,无法获取数据。
- /// </summary>
- private static string parentCode = "";
- /// <summary>
- /// 用于修改时验证重复项
- /// </summary>
- private static string VName = "";
- /// <summary>
- /// 查找具体的tag
- /// </summary>
- /// <param name="trnode"></param>
- /// <param name="treeTag"></param>
- /// <param name="treelist"></param>
- private void FindTreeNodeFromTag(TreeNode trnode, string treeTag, ref ArrayList treelist)
- {
- if (trnode.Tag != null && trnode.Tag.ToString() == treeTag)
- {
- treelist.Add(trnode);
- }
- foreach (TreeNode anode in trnode.Nodes)
- {
- FindTreeNodeFromTag(anode, treeTag, ref treelist);
- }
- }
- /// <summary>
- /// 刷新操作
- /// </summary>
- private void doQuery()
- {
- this.dataTable1.Clear();
- DataTable dt = new DataTable();
- dt = ServerHelper.GetData("com.steering.pss.qcm.CorePermissionConfigure.doQuery", new Object[] { utName.Text }, this.ob);
- GridHelper.CopyDataToDatatable(ref dt, ref this.dataTable1, true);
- //内容自适应
- GridHelper.RefreshAndAutoSizeExceptRows(ultraGrid1, new UltraGridColumn[] {
- ultraGrid1.DisplayLayout.Bands[0].Columns["REMARK"]
- });
- }
- /// <summary>
- /// 刷新操作
- /// </summary>
- private void QueryUserInfo()
- {
- this.dataTable2.Clear();
- if (ultraGrid1.ActiveRow == null)
- return;
- DataTable dt = new DataTable();
- dt = ServerHelper.GetData("com.steering.pss.qcm.CorePermissionConfigure.QueryUserInfo", new Object[] { ultraGrid1.ActiveRow.Cells["ID"].Text }, this.ob);
- GridHelper.CopyDataToDatatable(ref dt, ref this.dataTable2, true);
- GridHelper.RefreshAndAutoSize(ultraGrid2);
- }
- /// <summary>
- /// 保存
- /// </summary>
- private void doSave()
- {
- if (ultraGrid1.ActiveRow == null)
- {
- MessageUtil.ShowTips("请选中需要保存的角色信息");
- return;
- }
- ArrayList parm = new ArrayList();
- getTreeAllInfo(treeView1.Nodes, parm);
- CoreClientParam ccp = new CoreClientParam();
- ccp.ServerName = "com.steering.pss.qcm.CorePermissionConfigure";
- ccp.MethodName = "doSave";
- ccp.ServerParams = new object[] { ultraGrid1.ActiveRow.Cells["ID"].Text, UserInfo.GetUserID(), UserInfo.GetUserName(), parm };
- ccp = this.ExecuteNonQuery(ccp, CoreInvokeType.Internal);
- if (ccp != null)
- {
- if (ccp.ReturnCode == -1)
- {
- MessageUtil.ShowWarning(ccp.ReturnInfo);
- return;
- }
- }
- else
- {
- return;
- }
- MessageUtil.ShowTips("保存成功");
- bandTreeView();
- }
- public void getTreeAllInfo(TreeNodesCollection tnc, ArrayList parm)
- {
- foreach (UltraTreeNode node in tnc)
- {
- if (node.CheckedState == CheckState.Checked || node.CheckedState == CheckState.Indeterminate)
- parm.Add(node.Tag);
- if (node.Nodes.Count > 0)
- {
- getTreeAllInfo(node.Nodes, parm);
- }
- }
- }
- public void checkByList(TreeNodesCollection tnc, ArrayList parm)
- {
- foreach (UltraTreeNode node in tnc)
- {
- if (node.Nodes.Count > 0)
- {
- checkByList(node.Nodes, parm);
- }
- else
- {
- if (parm.Contains(node.Tag))
- {
- node.CheckedState = CheckState.Checked;
- setparent(node);
- }
- }
- }
-
- }
- /// <summary>
- /// 树控件绑定数据源
- /// </summary>
- public void bandTreeView()
- {
- treeView1.Nodes.Clear();
- DataTable dt = new DataTable();
- dt = ServerHelper.GetData("com.steering.pss.qcm.CoreMenuzConfigure.getTreeData", new Object[] { }, this.ob);
- ArrayList list = new ArrayList();
- if (ultraGrid1.ActiveRow != null)
- {
- DataTable dt1 = new DataTable();
- dt1 = ServerHelper.GetData("com.steering.pss.qcm.CorePermissionConfigure.getPageRole", new Object[] { ultraGrid1.ActiveRow.Cells["ID"].Text }, this.ob);
- if (dt.Rows.Count > 0)
- {
- foreach (DataRow dr in dt1.Rows)
- {
- list.Add(dr["PAGE_ID"].ToString());
- }
- }
- }
- //树控件递归绑定方法。
- Bind_Tv(dt, treeView1.Nodes, null, "PAGE_ID", "SORT_CODE", "PAGE_NAME", list);
- checkByList(treeView1.Nodes, list);
- }
- /// <summary>
- /// top复选框选中事件触发,更新树控件数据源
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void chbx_CheckedChanged(object sender, EventArgs e)
- {
- if (this.Cursor == Cursors.WaitCursor) return;
- //刷新功能。
- try
- {
- this.Cursor = Cursors.WaitCursor;
- bandTreeView();
- }
- finally
- {
- this.Cursor = Cursors.Default;
- }
- }
- /// <summary>
- /// 绑定TreeView(利用TreeNodeCollection)
- /// </summary>
- /// <param name="tnc">TreeNodeCollection(TreeView的节点集合)</param>
- /// <param name="pid_val">父id的值</param>
- /// <param name="id">数据库 id 字段名</param>
- /// <param name="pid">数据库 父id 字段名</param>
- /// <param name="text">数据库 文本 字段值</param>
- private void Bind_Tv(DataTable dtOld, TreeNodesCollection tnc, string pid_val, string id, string pid, string text, ArrayList list)
- {
- dtOld.DefaultView.Sort = id + " Asc";
- DataTable dt = dtOld.DefaultView.ToTable();
- DataView dv = new DataView(dt);//将DataTable存到DataView中,以便于筛选数据
- UltraTreeNode tn;//建立TreeView的节点(TreeNode),以便将取出的数据添加到节点中
- //以下为三元运算符,如果父id为空,则为构建“父id字段 is null”的查询条件,否则构建“父id字段=父id字段值”的查询条件
- string filter = string.IsNullOrEmpty(pid_val) ? pid + " is null" : string.Format(pid + "='{0}'", pid_val);
- dv.RowFilter = filter;//利用DataView将数据进行筛选,选出相同 父id值 的数据
- dt.DefaultView.Sort = id + " Asc";
- foreach (DataRowView drv in dv)
- {
- tn = new UltraTreeNode();//建立一个新节点(学名叫:一个实例)
- tn.Tag = drv[id].ToString();//节点的Value值,一般为数据库的id值
- tn.Text = drv[text].ToString();//节点的Text,节点的文本显示
- //if (list.Contains(drv[id].ToString()))
- // tn.CheckedState = CheckState.Checked;
- tnc.Add(tn);//将该节点加入到TreeNodeCollection(节点集合)中
- Bind_Tv(dt, tn.Nodes, tn.Tag.ToString(), id, pid, text, list);//递归(反复调用这个方法,直到把数据取完为止)
- }
- }
- private void FrmPermissionConfigure_Load(object sender, EventArgs e)
- {
- bandTreeView();
- }
- private void ultraButton1_Click(object sender, EventArgs e)
- {
- doQuery();
- }
- private void ultraGrid1_AfterRowActivate(object sender, EventArgs e)
- {
- QueryUserInfo();
- bandTreeView();
- }
- //设置标志,防止死循环
- bool check = false;
- //设置半勾选
- int indeterFlag = 0;
- int checkFlag = 0;
- private void treeView1_AfterCheck(object sender, NodeEventArgs e)
- {
-
- if (check)
- {
- check = false;
- setchild(e.TreeNode);
- setparent(e.TreeNode);
- }
- }
- //设置子节点状态
- private void setchild(UltraTreeNode node)
- {
-
- foreach (UltraTreeNode child in node.Nodes)
- {
- child.CheckedState = node.CheckedState;
- if (child.Nodes.Count > 0)
- setchild(child);
- }
- }
- //设置父节点状态
- private void setparent(UltraTreeNode node)
- {
- if (node.Parent != null)
- {
- //如果当前节点状态为勾选,则需要所有兄弟节点都勾选才能勾选父节点
- foreach (UltraTreeNode brother in node.Parent.Nodes)
- {
- if (brother.CheckedState == CheckState.Indeterminate)
- indeterFlag++;
- if (brother.CheckedState == CheckState.Checked)
- checkFlag++;
- }
- if (checkFlag == 0 && indeterFlag == 0)
- {
- checkFlag = 0;
- indeterFlag = 0;
- node.Parent.CheckedState = CheckState.Unchecked;
- }
- else if (checkFlag == node.Parent.Nodes.Count)
- {
- checkFlag = 0;
- indeterFlag = 0;
- node.Parent.CheckedState = node.CheckedState;
- }
- else
- {
- checkFlag = 0;
- indeterFlag = 0;
- node.Parent.CheckedState = CheckState.Indeterminate;
- }
- if (node.Parent.Parent != null)
- setparent(node.Parent);
- }
- }
- private void treeView1_MouseUp(object sender, MouseEventArgs e)
- {
- check = true;
- }
- }
- }
|