using System; using System.Collections.Generic; using System.ComponentModel; using System.IO; using System.Diagnostics; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using CoreFS.CA06; using System.Collections; using Core.Mes.Client.Common; namespace Core.LgMes.Client.LgIntegrationQuery { public partial class frmBaseInfo : Core.Mes.Client.Common.frmStyleBase { public frmBaseInfo() { InitializeComponent(); } string sCurrNode = ""; bool blCheckChange = false; public override void ToolBar_Click(object sender, string ToolbarKey) { switch (ToolbarKey) { case "Query": BandTreeData(); break; case "Update": doEdit(); break; case "Add": doAdd(); break; case "Delete": doDel(); break; case "Exit": Close(); break; } } private void frmBaseInfo_Load(object sender, EventArgs e) { if (this.QueryStrings.Length > 1) { setCondition(QueryStrings[1]); } BandTreeData(); blCheckChange = true; } void setCondition(string sKey) { foreach (Control ctl in ultraGroupBox1.Controls) { if (ctl is CheckBox) { ((CheckBox)ctl).Checked = false; ((CheckBox)ctl).Enabled = false; } } switch (sKey) { case "质量": chbxZL.Enabled = true; chbxZL.Checked = true; break; case "工器具": chbxDM.Enabled = true; chbxDM.Checked = true; break; case "计划": chbxJH.Enabled = true; chbxJH.Checked = true; break; case "炼钢": chbxLG.Enabled = true; chbxLG.Checked = true; break; case "轧钢": chbxZG.Enabled = true; chbxZG.Checked = true; break; case "库存": chbxKC.Checked = true; chbxKC.Enabled = true; break; default: foreach (Control ctl in ultraGroupBox1.Controls) { if (ctl is CheckBox) { ((CheckBox)ctl).Checked = true; ((CheckBox)ctl).Enabled = true; } } break; } } private void BandTreeData() { treeView1.Nodes.Clear(); if (ulGridMain.Rows.Count > 0) ((DataSet)ulGridMain.DataSource).Tables[0].Rows.Clear(); string[] sArgs = new string[8]; int i = 0; #region 查询条件 if (chbxLG.Checked) { sArgs[0] = " substr(basecode,1,1) ='1' "; //炼钢作业 i++; } else sArgs[0] = ""; if (chbxDM.Checked) { sArgs[1] = " substr(basecode,1,1) ='4' "; //工器具 i++; } else sArgs[1] = ""; if (chbxZG.Checked) { sArgs[2] = " substr(basecode,1,1) ='6' "; //轧钢作业 i++; } else sArgs[2] = ""; if (chbxZL.Checked) { sArgs[3] = " substr(basecode,1,1) ='2' "; //质量 i++; } else sArgs[3] = ""; if (chbxKC.Checked) { sArgs[4] = " substr(basecode,1,1) ='5' "; //库存 i++; } else sArgs[4] = ""; if (chbxQT.Checked) { sArgs[5] = " substr(basecode,1,1) ='8' or substr(basecode,1,1) ='9' "; //其它 i++; } else sArgs[5] = ""; if (chbxJH.Checked) { sArgs[6] = " substr(basecode,1,1) ='3' "; //炼钢作业 i++; } else sArgs[6] = ""; if (QueryStrings.Length > 1 && QueryStrings[1].Length > 0) { string[] strCode = QueryStrings[1].Split(','); for (int k = 0; k < strCode.Length; k++) { if (strCode[k].Trim().Length > 0) { if (k == 0) sArgs[7] += " ('" + strCode[k].ToString() + "' "; else sArgs[7] += " , '" + strCode[k].ToString() + "' "; } } sArgs[7] += ") "; } else { sArgs[7] = ""; } #endregion //取基本数据表记录 string strWhere = ""; int jj = 0; for (int ii = 0; ii < sArgs.Length; ii++) { if (sArgs[ii].Trim().Length > 0) { if (jj == 0) strWhere += " and ("; else strWhere += " or "; strWhere += sArgs[ii]; jj++; } } if (jj > 0) { strWhere += " ) "; } if (i > 0) { DataSet ds = new DataSet(); //定义一个ArrayList集合存储变量[参数]值 ArrayList arry = new ArrayList(); ArrayList sqlList = new ArrayList(); arry.Add("frmBaseInfo.select"); sqlList.Add(strWhere); //调用服务端方法 CoreClientParam CCP_BSInfo = new CoreClientParam(); DataTable dt = new DataTable(); CCP_BSInfo.ServerName = "Core.LgMes.Server.Common.ComDBQuery"; CCP_BSInfo.MethodName = "doQuery"; CCP_BSInfo.ServerParams = new object[] { arry, sqlList }; CCP_BSInfo.SourceDataTable = dt; this.ExecuteQueryToDataTable(CCP_BSInfo, CoreInvokeType.Internal); ds.Tables.Add(dt); if (ds != null) { if (ds.Tables[0].Rows.Count > 0 ) { for (int j = 0; j < ds.Tables[0].Rows.Count; j++) { if (ds.Tables[0].Rows[j]["pid"].ToString().Length > 0) { if (ds.Tables[0].Rows[j]["pid"].ToString().Length == 1) treeView1.Nodes.Add(ds.Tables[0].Rows[j]["basecode"].ToString(), ds.Tables[0].Rows[j]["basecode"].ToString() + "-" + ds.Tables[0].Rows[j]["basename"].ToString()); else { findParentNode(treeView1.Nodes[ds.Tables[0].Rows[j]["basecode"].ToString().Substring(0, 4)], ds.Tables[0].Rows[j]["pid"].ToString()).Nodes.Add(ds.Tables[0].Rows[j]["basecode"].ToString(), ds.Tables[0].Rows[j]["basecode"].ToString() + "-" + ds.Tables[0].Rows[j]["basename"].ToString()); } } } } } if (ulGridMain.Rows.Count > 0) ((DataSet)ulGridMain.DataSource).Tables[0].Rows.Clear(); } } TreeNode findParentNode(TreeNode preLvlNode,string parentKey) { if(preLvlNode.Name == parentKey) return preLvlNode; foreach (TreeNode node in preLvlNode.Nodes) { if (node.Name.Length <= parentKey.Length) { if (node.Nodes.Count > 0) { TreeNode tNode = findParentNode(node, parentKey); if (tNode != null) return tNode; } else if (node.Name == parentKey) return node; } else return null; } return null; } void doEdit() { string strError = ""; Infragistics.Win.UltraWinGrid.UltraGridRow row = this.ulGridMain.ActiveRow; if (row != null && !row.IsFilteredOut) { string err = ""; string[] sArgs = new string[10]; sArgs[0] = row.Cells["BASECODE"].Text.Trim(); sArgs[1] = this.txtName.Text.Trim(); sArgs[2] = this.txtCE.Text.Trim(); sArgs[3] = this.txtMemo.Text.Trim(); sArgs[4] = this.UserInfo.GetUserName(); sArgs[5] = (checkBox1.Checked ? "1" : "0"); sArgs[6] = row.Cells["sortcode"].Text.Trim(); sArgs[7] = (row.Cells["flag"].Text.Trim() == "是" ? "1" : "0"); sArgs[8] = row.Cells["basename"].Text.Trim(); sArgs[9] = txtSEQ.Text; if (sArgs[1] == "") { MessageBox.Show("名称未输入", "提示"); this.txtName.Focus(); return; } if (this.txtSCode.Text.Trim() == "1005" && sArgs[2] == "") { MessageBox.Show("复合元素必须输入计算公式", "提示"); this.txtCE.Focus(); return; } //存储过程实现基础信息的添加 string strSqlID = "SaveBaseData.Update"; Hashtable hashtb = new Hashtable(); hashtb.Add("I1", sArgs[0]); hashtb.Add("I2", sArgs[1]); hashtb.Add("I3", sArgs[2]); hashtb.Add("I4", sArgs[3]); hashtb.Add("I5", sArgs[4]); hashtb.Add("I6", sArgs[5]); hashtb.Add("I7", sArgs[6]); hashtb.Add("I8", sArgs[7]); hashtb.Add("I9", sArgs[8]); hashtb.Add("I10", sArgs[9]); hashtb.Add("O1", ""); hashtb.Add("O2", ""); CommonClientToServer ccTs = new CommonClientToServer(); ccTs.ob = ob; string strRCode = ccTs.ExecuteProcedureFunctions("Core.LgMes.Server.lgIntegrationQuery.PerformanceLog", "BaseDataManage", strSqlID, hashtb, out strError); if (strError=="") { //if (sArgs[7] == "1") //{ // if (sArgs[5] == "1") // { // findParentNode(treeView1.Nodes[sArgs[0].Substring(0, 4)], sArgs[6]).Nodes[sArgs[0]].Text = sArgs[0] + "-" + sArgs[1]; // } // else // { // findParentNode(treeView1.Nodes[sArgs[0].Substring(0, 4)], sArgs[6]).Nodes[sArgs[0]].Remove(); // } //} //else //{ // if (sArgs[5] == "1") // { // findParentNode(treeView1.Nodes[sArgs[0].Substring(0, 4)], sArgs[6]).Nodes.Add(sArgs[0], sArgs[0] + "-" + sArgs[8]); // } //} BandTreeData(); string[] sArg = new string[1]; sArg[0] = sCurrNode; getNodeChileData(sArg); for (int i = 0; i < this.ulGridMain.Rows.Count; i++) { if (ulGridMain.Rows[i].Cells["BASENAME"].Text == sArgs[1]) { ulGridMain.ActiveRow = ulGridMain.Rows[i]; i = ulGridMain.Rows.Count; } } } else { MessageBox.Show(err,"提示"); } } else { MessageBox.Show("请选择一行数据!", "提示"); } } void doDel() { string strError = ""; Infragistics.Win.UltraWinGrid.UltraGridRow row = this.ulGridMain.ActiveRow; if (row != null && !row.IsFilteredOut) { if (row.Cells["ISVISIBLE"].Text == "是") { MessageBox.Show("系统默认,不允许删除","提示"); return; } if (MessageBox.Show("你确定要删除此行数据吗?", "删除提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { string strSqlID = "SaveBaseData.Del"; ; Hashtable hashtb = new Hashtable(); hashtb.Add("I1", row.Cells["BASECODE"].Text); //编码 hashtb.Add("I2", row.Cells["SORTCODE"].Text); //编码分类 hashtb.Add("I3", row.Cells["FLAG"].Text); //是否允许添加子集 hashtb.Add("I4", this.UserInfo.GetUserName()); //维护人 hashtb.Add("O1", ""); //是否允许添加子集 hashtb.Add("O2", ""); //维护人 CommonClientToServer ccTs = new CommonClientToServer(); ccTs.ob = ob; string strRCode = ccTs.ExecuteProcedureFunctions("Core.LgMes.Server.lgIntegrationQuery.PerformanceLog", "BaseDataManage", strSqlID, hashtb, out strError); if (strError=="") { string[] sArgs = new string[4]; sArgs[0] = row.Cells["BASECODE"].Text;//编码 sArgs[1] = row.Cells["SORTCODE"].Text;//编码分类 sArgs[2] = row.Cells["FLAG"].Text;//是否允许添加子集 sArgs[3] = this.UserInfo.GetUserName();//维护人 ulGridMain.ActiveRow.Delete(false); ulGridMain.UpdateData(); if (sArgs[2] == "是") findParentNode(treeView1.Nodes[sArgs[0].Substring(0, 4)], sArgs[1]).Nodes[sArgs[0]].Remove(); activeRightRow(); } else { MessageBox.Show(strError, "提示"); } } } else { MessageBox.Show("请选择一行数据!", "提示"); } } void doAdd() { string strError = ""; string[] sArgs = new string[8]; sArgs[0] = this.txtSCode.Text.Trim() + this.txtCodePart2.Text.Trim(); sArgs[1] = this.txtName.Text.Trim(); sArgs[2] = this.txtSCode.Text.Trim(); sArgs[3] = this.txtMemo.Text.Trim(); sArgs[4] = this.UserInfo.GetUserName(); sArgs[5] = (checkBox1.Checked ? "1" : "0"); sArgs[6] = txtCE.Text.Trim(); sArgs[7] = txtSEQ.Text.Trim(); if (sArgs[0] == "") { MessageBox.Show("编号未输入", "提示"); this.txtCodePart1.Focus(); return; } if (sArgs[0].Length <= sArgs[2].Length )//|| !IsNumeric(sArgs[0])) { MessageBox.Show("编号应为" + sArgs[2].Length + "位以上的数字", "提示"); this.txtCodePart1.Focus(); return; } if (sArgs[0].Substring(0, sArgs[2].Length) != sArgs[2]) { MessageBox.Show("编号前" + sArgs[2].Length + "位数字应与对应的编码分类保持一致,应为:" + sArgs[2], "提示"); this.txtCodePart1.Focus(); return; } if (sArgs[1] == "") { MessageBox.Show("名称未输入", "提示"); this.txtName.Focus(); return; } if (this.txtSCode.Text.Trim() == "1005" && sArgs[6] == "") { MessageBox.Show("复合元素必须输入计算公式", "提示"); this.txtCE.Focus(); return; } //存储过程实现基础信息的添加 string strSqlID = "SaveBaseData.Add"; Hashtable hashtb = new Hashtable(); hashtb.Add("I1", sArgs[0]); hashtb.Add("I2", sArgs[1]); hashtb.Add("I3", sArgs[2]); hashtb.Add("I4", sArgs[3]); hashtb.Add("I5", sArgs[4]); hashtb.Add("I6", sArgs[5]); hashtb.Add("I7", sArgs[6]); hashtb.Add("I8", sArgs[7]); hashtb.Add("O1", ""); hashtb.Add("O2", ""); CommonClientToServer ccTs = new CommonClientToServer(); ccTs.ob = ob; string strRCode = ccTs.ExecuteProcedureFunctions("Core.LgMes.Server.lgIntegrationQuery.PerformanceLog", "BaseDataManage", strSqlID, hashtb, out strError); if (strError=="") { if (sArgs[5] == "1") findParentNode(treeView1.Nodes[sArgs[2].Substring(0, 4)], sArgs[2]).Nodes.Add(sArgs[0], sArgs[0] + "-" + sArgs[1]); string[] sArg = new string[1]; sArg[0] = sCurrNode; getNodeChileData(sArg); for (int i = 0; i < ulGridMain.Rows.Count; i++) { if (ulGridMain.Rows[i].Cells["BASECODE"].Text == sArgs[0]) { if (!ulGridMain.Rows[i].Activated) { ulGridMain.Rows[i].Activated = true; ulGridMain.Rows[i].Selected = true; } break; } } } else { MessageBox.Show(strError, "提示"); } } void checkChk() { activeRow(); checkLeftActiveRow(); } private void ultraLeftGrid_AfterRowActivate(object sender, EventArgs e) { checkLeftActiveRow(); activeRightRow(); } private void checkLeftActiveRow() { checkRightActiveRow(); } private void checkRightActiveRow() { Infragistics.Win.UltraWinGrid.UltraGridRow row = ulGridMain.ActiveRow; if (row != null && !row.IsFilteredOut) { this.txtCodePart2.Text = row.Cells["BASECODE"].Text.Substring(row.Cells["SORTCODE"].Text.Trim().Length); this.txtMemo.Text = row.Cells["MEMO"].Text; this.txtCE.Text = row.Cells["MEMO1"].Text; this.txtName.Text = row.Cells["BASENAME"].Text; this.txtSCode.Text = row.Cells["SORTCODE"].Text; this.txtSEQ.Text = row.Cells["SEQ"].Text; if (row.Cells["flag"].Text == "否") checkBox1.Checked = false; else checkBox1.Checked = true; } else { this.txtMemo.Text = ""; this.txtName.Text = ""; checkBox1.Checked = false; if (row != null) row.Activated = false; } } private void activeRow() { activeRightRow(); } private void activeRightRow() { foreach (Infragistics.Win.UltraWinGrid.UltraGridRow row in this.ulGridMain.Rows) { row.Selected = false; row.Activated = false; } if (ulGridMain.Rows.VisibleRowCount > 0) { ulGridMain.Rows.GetRowAtVisibleIndex(0).Activate(); ulGridMain.Rows.GetRowAtVisibleIndex(0).Selected = true; } else { //this.txtCode = ""; this.txtMemo.Text = ""; this.txtName.Text = ""; //this.txtSCode = ""; if (ulGridMain.ActiveRow != null) ulGridMain.ActiveRow.Activated = false; checkRightActiveRow(); } } private void ultraRightGrid_AfterRowActivate(object sender, EventArgs e) { checkRightActiveRow(); } private bool IsNumeric(string str) { if (str == null || str.Length == 0) return false; System.Text.ASCIIEncoding ascii = new System.Text.ASCIIEncoding(); byte[] bytestr = ascii.GetBytes(str); foreach (byte c in bytestr) { if (c < 48 || c > 57) { return false; } } return true; } private void txtCode_KeyPress(object sender, KeyPressEventArgs e) { if ((e.KeyChar < 48 || e.KeyChar > 57) && e.KeyChar != 8) { e.Handled = true; } } TreeNode tNode = new TreeNode();//保存上次选择的Node private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { string[] sArgs = e.Node.Text.Split('-'); sCurrNode = sArgs[0];//节点代码 //设置当前选中的节点变为粗体,上次选中的节点恢复未选中的字体 if (tNode.Text.Trim() != "") tNode.NodeFont = new Font("宋体", 9F, System.Drawing.FontStyle.Regular); e.Node.NodeFont = new Font("宋体", 9F, System.Drawing.FontStyle.Bold); //指定编辑区域,编号,前半部分 this.txtCodePart1.Text = sArgs[0]; getNodeChileData(sArgs); tNode = e.Node;//保存所选节点 } private void getNodeChileData(string[] sArgs) { ArrayList arry = new ArrayList(); string err = ""; DataSet ds = new DataSet(); arry.Add("frmBaseInfo_Children.select");//此ID为XML文件ID arry.Add(sArgs[0]); //调用服务端方法 CoreClientParam CCP_Children = new CoreClientParam(); DataTable dt = new DataTable(); CCP_Children.ServerName = "Core.LgMes.Server.Common.ComDBQuery"; CCP_Children.MethodName = "doSimpleQuery"; CCP_Children.ServerParams = new object[] { arry }; CCP_Children.SourceDataTable = dt; this.ExecuteQueryToDataTable(CCP_Children, CoreInvokeType.Internal); ds.Tables.Add(dt); if (err == "") { if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0) { ulGridMain.DataSource = ds; ulGridMain.DataBind(); } else { DataSet dsgrid = (DataSet)ulGridMain.DataSource; dsgrid.Tables[0].Rows.Clear(); ulGridMain.DataSource = dsgrid; ulGridMain.DataBind(); // ulGridMain } } if (ulGridMain.Rows.Count == 0) { txtCodePart2.Text = ""; txtName.Text = ""; txtSCode.Text = sCurrNode; txtMemo.Text = ""; checkBox1.Checked = false; } } private void txtSEQ_KeyPress(object sender, KeyPressEventArgs e) { if (!(Char.IsNumber(e.KeyChar) || e.KeyChar == '\b')) { e.Handled = true; } } private void chbx_CheckedChanged(object sender, EventArgs e) { if (blCheckChange) BandTreeData(); } } }