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 CoreFS.CA06; using Pur.Entity; using Pur.Entity; using Pur.Entity.configureEntity; using Core.Mes.Client.Comm.Control; using com.hnshituo.pur.vo; using Core.Mes.Client.Comm.Tool; using Infragistics.Win.UltraWinGrid; using System.Collections; using Core.Mes.Client.Comm.Server; namespace Pur.Pop_upWindow { public partial class FrmPopAttrs : FrmPmsBase { public string QstrItemAttrCode = "";//属性编码 public string QstrItemAttr = "";//属性名称 public string QstrItemAttrClass = "";//属性分类编码 public string QstrItemAttrClassName = "";//属性分类名称 public string[,] QstrAttr = null;//保存所选属性 public string[,] QstrAttrCode = null;//保存所选属性 public FrmPopAttrs(OpeBase ob) { InitializeComponent(); this.ob = ob; GridHelper.SetExcludeColumnsActive(ultraGrid1.DisplayLayout.Bands[0], "Check"); } /// /// 刷新操作 /// private void doQuery() { //查询按钮就当刷新功能。 bandTreeView(); } /// /// 树控件绑定数据源 /// public void bandTreeView() { ArrayList parms = new ArrayList(); //DataTable treeViewdt = ServerHelper.GetData("com.hnshituo.pur.configure.service.impl.CoreAttrs.getTreeData", new Object[] { parms }, this.ob); //binUltraGrid("2001"); treeView1.Nodes.Clear(); DataTable dt = new DataTable(); dt = ServerHelper.GetData("com.hnshituo.pur.configure.service.impl.CoreAttrs.getTreeData", new Object[] { parms }, this.ob); //树控件递归绑定方法。 Bind_Tv(dt, treeView1.Nodes, null, "BASECODE", "SORTCODE", "BASENAME"); treeView1.Nodes[0].Expand(); //初始化二位数组 QstrAttr = new string[treeView1.Nodes[0].Nodes.Count, 2]; QstrAttrCode = new string[treeView1.Nodes[0].Nodes.Count, 2]; for (int i = 0; i < treeView1.Nodes[0].Nodes.Count; i++) { QstrAttr[i, 0] = treeView1.Nodes[0].Nodes[i].Text; QstrAttrCode[i, 0] = treeView1.Nodes[0].Nodes[i].Tag.ToString(); } } /// /// 绑定TreeView(利用TreeNodeCollection) /// /// TreeNodeCollection(TreeView的节点集合) /// 父id的值 /// 数据库 id 字段名 /// 数据库 父id 字段名 /// 数据库 文本 字段值 private void Bind_Tv(DataTable dt, TreeNodeCollection tnc, string pid_val, string id, string pid, string text) { DataView dv = new DataView(dt);//将DataTable存到DataView中,以便于筛选数据 TreeNode 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值 的数据 foreach (DataRowView drv in dv) { tn = new TreeNode();//建立一个新节点(学名叫:一个实例) tn.Tag = drv[id].ToString();//节点的Value值,一般为数据库的id值 tn.Text = drv[text].ToString();//节点的Text,节点的文本显示 tnc.Add(tn);//将该节点加入到TreeNodeCollection(节点集合)中 Bind_Tv(dt, tn.Nodes, tn.Tag.ToString(), id, pid, text);//递归(反复调用这个方法,直到把数据取完为止) } } /// /// 按钮控件 /// /// /// private void barsManagerButon_ToolClick(object sender, Infragistics.Win.UltraWinToolbars.ToolClickEventArgs e) { switch (e.Tool.Key.ToString()) { case "conFirmation": { if (ultraGrid1.ActiveRow != null) { if (ultraGrid1.ActiveRow == null || ultraGrid1.ActiveRow.Hidden == true) { MessageUtil.ShowTips("请选择一条数据"); return; } QstrItemAttr = ultraGrid1.ActiveRow.Cells["BASENAME"].Value.ToString();//lbAttrs.Text; QstrItemAttrCode = ultraGrid1.ActiveRow.Cells["BASECODE"].Value.ToString();//lbAttrCode.Text; QstrItemAttrClass = treeView1.SelectedNode.Tag.ToString();//属性分类编码 QstrItemAttrClassName = treeView1.SelectedNode.Text.ToString(); ;//属性分类名称 this.Close(); } } break; case "ESC": { this.Close(); } break; } } /// /// terrView1选择内容更改时触发。 /// /// /// private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) { try { this.Cursor = Cursors.WaitCursor; //给编辑区域控件赋值。 //基础分类编码 //txtCodePart1.Text = e.Node.Tag.ToString(); //快速检索码 //txtSCode.Text = e.Node.Tag.ToString(); //刷新Grid数据源,将父节点等于当前选中节点的数据全部取出来,构建数据源。 //parentCode = e.Node.Tag.ToString(); binUltraGrid(e.Node.Tag.ToString()); } finally { this.Cursor = Cursors.Default; } } /// /// 刷新Grid数据源 /// /// private void binUltraGrid(string basecode) { this.dataTable1.Clear(); DataTable dt = ServerHelper.GetData("com.hnshituo.pur.configure.service.impl.CoreAttrs.doQuery", new Object[] { basecode }, this.ob); GridHelper.CopyDataToDatatable(ref dt, ref this.dataTable1, true); //不同颜色区分是否有效数据 Infragistics.Win.UltraWinGrid.UltraGridRow row = null; for (int i = 0; i < ultraGrid1.Rows.Count; i++) { row = ultraGrid1.Rows[i]; if (!row.Cells["VALIDFLAG"].Value.ToString().Equals("1")) { row.Appearance.ForeColor = Color.Red; } else { row.Appearance.ForeColor = Color.Black; } } //内容自适应 GridHelper.RefreshAndAutoSizeExceptRows(ultraGrid1, new UltraGridColumn[] { ultraGrid1.DisplayLayout.Bands[0].Columns["MEMO"] }); } /// /// 界面初始化 /// /// /// private void FrmPopAttrs_Load(object sender, EventArgs e) { doQuery(); } /// /// 选择属性事件 /// /// /// private void ultraGrid1_CellChange(object sender, CellEventArgs e) { ultraGrid1.UpdateData(); if ((bool)e.Cell.Value) { //设置单选 foreach (UltraGridRow ugr in ultraGrid1.Rows) { if ((bool)ugr.Cells["Check"].Value) { if (ugr != e.Cell.Row) { ugr.Cells["Check"].Value = false; break; } } } //保存属性 for (int i = 0; i < QstrAttr.GetLength(0); i++) { if (QstrAttr[i, 0] == treeView1.SelectedNode.Text) { QstrAttr[i, 1] = e.Cell.Row.Cells["BASENAME"].Value.ToString(); QstrAttrCode[i, 1] = e.Cell.Row.Cells["BASECODE"].Value.ToString(); break; } } } else//取消勾选 { for (int i = 0; i < QstrAttr.GetLength(0); i++) { if (QstrAttr[i, 1] == e.Cell.Row.Cells["BASENAME"].Value.ToString()) { QstrAttr[i, 1] = ""; QstrAttrCode[i, 1] = ""; break; } } } //显示所选属性 lbAttrs.Text = ""; lbAttrCode.Text = ""; for (int i = 0; i < QstrAttr.GetLength(0); i++) { lbAttrs.Text+= QstrAttr[i, 1]; lbAttrCode.Text += QstrAttrCode[i, 1]; if (!string.IsNullOrEmpty(QstrAttr[i, 1])) { lbAttrs.Text += ";"; lbAttrCode.Text += ";"; } } if (!string.IsNullOrEmpty(lbAttrs.Text)) { lbAttrs.Text = lbAttrs.Text.Remove(lbAttrs.Text.Length - 1); lbAttrCode.Text = lbAttrCode.Text.Remove(lbAttrCode.Text.Length - 1); } } } }