using Core.Mes.Client.Comm.Control; using Core.Mes.Client.Comm.Server; using Core.Mes.Client.Comm.Tool; using CoreFS.CA06; using Infragistics.Win.UltraWinEditors; using Infragistics.Win.UltraWinGrid; using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.Drawing; using System.Windows.Forms; namespace Core.StlMes.Client.Qcm { public partial class FrmPack : FrmBase { public FrmPack() { InitializeComponent(); this.IsLoadUserView = true; //平台F1功能 } private string msc; private string msc_desc; public UltraGridRow rowparm; private List MSCCodes = new List(); //做过操作的冶金规范码和序号 ArrayList parentParm = new ArrayList(); //主表批量参数 新增 ArrayList parentParmU = new ArrayList(); //主表批量数据 修改 ArrayList childParm = new ArrayList(); //从表批量数据 新增 ArrayList childParmU = new ArrayList(); //从表批量数据 修改 /// /// 初始化下拉框 /// /// 下拉框comboEditor /// 服务方法,包名+类名+方法名 /// 下拉框的值成员 private void initJGDropDown(UltraComboEditor uce, string MethodId, string memberValue) { //初始化编辑区域下拉框 DataTable dt = ServerHelper.GetData(MethodId, null, this.ob); if (dt != null && dt.Rows.Count > 0) { if (uce == ultraComboEditor4 || uce == ultraComboEditor1) { DataRow dr = dt.NewRow(); object[] obj = { "", "" }; dr.ItemArray = obj; dt.Rows.Add(dr); } uce.DataSource = dt; uce.ValueMember = memberValue; } } private void FrmPack_Load(object sender, EventArgs e) { InitMSC(); initJGDropDown(this.ultraComboEditor1, "com.steering.pss.qcm.PackAndMSC.GetXZSpec", "BASECODE"); initJGDropDown(this.ultraComboEditor4, "com.steering.pss.qcm.PackAndMSC.GetJGSpec", "SPEC_CODE"); initJGDropDown(this.ultraComboEditor5, "com.steering.pss.qcm.PackAndMSC.GetBase", "BASECODE"); initJGDropDown(this.ultraComboEditor6, "com.steering.pss.qcm.PackAndMSC.GetItem", "BASECODE"); initJGDropDown(this.ultraComboEditor7, "com.steering.pss.qcm.PackAndMSC.GetNote", "BASECODE"); } private void InitMSC() { DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.PackAndMSC.GetMSC", null, this.ob); GridHelper.CopyDataToDatatable(ref dt, ref this.dataTable3, true); GridHelper.RefreshAndAutoSize(ultraGrid1); if (dt != null && dt.Rows.Count > 0) { this.ultraGrid2.DisplayLayout.Override.AllowAddNew = AllowAddNew.TemplateOnBottom; ultraGrid1.Rows[0].Activate(); } else { this.ultraGrid2.DisplayLayout.Override.AllowAddNew = AllowAddNew.No; } } public override void ToolBar_Click(object sender, string ToolbarKey) { switch (ToolbarKey) { case "Query": this.InitMSC(); break; case "Query1": this.doQuery(true); break; case "Save": this.doSave(); break; case "Delete": this.doDeleteOrResume(true); break; case "Resume": this.doDeleteOrResume(false); break; case "Close": this.Close(); break; } } private void ultraGrid1_AfterRowActivate(object sender, EventArgs e) { UltraGridRow ugr1 = this.ultraGrid1.ActiveRow; msc = ugr1.Cells["MSC"].Value.ToString(); msc_desc = ugr1.Cells["MSC_DESC"].Value.ToString(); doQuery(false); } //在客户端自动生成编号,但为了最大程度的并发,编号已改为服务端生成,这里只是界面上的显示数据,并非写入数据库的编号。 private void ultraGrid2_AfterRowInsert(object sender, RowEventArgs e) { UltraGridRow ugr2 = this.ultraGrid2.ActiveRow; //当前激活行,其实可以用e UltraGridRow ugr3 = this.ultraGrid2.ActiveRow; for (int j = 1; j < ugr2.Cells.Count; j++) { ugr2.Cells[j].Activation = Infragistics.Win.UltraWinGrid.Activation.NoEdit; } if (ugr2.Cells["MSC"].Value.ToString() == "") { ugr2.Cells["MSC"].Value = msc; } this.ultraGrid2.UpdateData(); if (ugr2.Cells["MSC"].Value.ToString() != "" && !ugr2.HasParent()) { int index_seq = 0; DataRow[] dr = dataTable1.Select("", "INDEX_SEQ DESC"); if (dr.Length > 0) //界面上有数据 { index_seq = Convert.ToInt32(dr[0]["INDEX_SEQ"]); //取得界面上序号最大的数据 } index_seq += 1; //界面上的序号+1 ugr2.Cells["INDEX_SEQ"].Value = index_seq; } if (ugr3.Cells["MSC"].Value.ToString() != "" && ugr3.HasParent()) { DataRow[] dr = dataTable2.Select("INDEX_SEQ='" + ugr3.Cells["INDEX_SEQ"].Value.ToString() + "'", "INDEX_SEQ_C DESC"); int index_seq_c = 0; if (dr.Length > 0) { index_seq_c = Convert.ToInt32(dr[0]["INDEX_SEQ_C"]); //界面上子表的序号 } index_seq_c += 1; ugr3.Cells["INDEX_SEQ_C"].Value = index_seq_c; } } /// /// 表格点击事件(扣型选择) /// /// /// private void ultraGrid2_ClickCellButton(object sender, CellEventArgs e) { //单击表格按钮时间(有一列格子设为按钮) UltraGridRow ugr = this.ultraGrid2.ActiveRow; if (e.Cell.Column.Key.Equals("MODEL_DESC") && ugr.Cells["CHK"].Value.ToString().ToUpper() != "FALSE") { //这一按钮列被点击,同时被点击的这一行被勾选了。 this.rowparm = this.ultraGrid2.ActiveRow; FrmModel fm = new FrmModel(); fm.FrmOb = this.ob; //ob对象传到扣型选择界面 fm.Desc = rowparm.Cells["MODEL_DESC"].Value.ToString(); //激活行的扣型描述 fm.ShowDialog(); rowparm.Cells["MODEL_CODE"].Value = fm.Code; //选择的扣型集合代码 rowparm.Cells["MODEL_DESC"].Value = fm.Desc; //选择的扣型集合描述 //返回到点击界面。 } } private void ultraGrid2_AfterCellUpdate(object sender, CellEventArgs e) {//界面上的值更新了 UltraGridRow ugr = this.ultraGrid2.ActiveRow; if (e.Cell.Column.Key.Equals("SIZE_NAME2")) { if (ugr.Cells["SIZE_NAME2"].Value.ToString() != "") { this.ultraComboEditor1.Text = ugr.Cells["SIZE_NAME2"].Text.ToString(); ugr.Cells["SIZE_CODE2"].Value = this.ultraComboEditor1.Value.ToString(); } } if (e.Cell.Column.Key.Equals("SIZE_NAME")) { if (ugr.Cells["SIZE_NAME"].Value.ToString() != "") { this.ultraComboEditor1.Text = ugr.Cells["SIZE_NAME"].Text.ToString(); ugr.Cells["SIZE_CODE"].Value = this.ultraComboEditor1.Value.ToString(); } } if (e.Cell.Column.Key.Equals("SIZE_JG_NAME")) { if (ugr.Cells["SIZE_JG_NAME"].Value.ToString() != "") { this.ultraComboEditor4.Text = ugr.Cells["SIZE_JG_NAME"].Text.ToString(); ugr.Cells["SIZE_JG_CODE"].Value = this.ultraComboEditor4.Value.ToString(); } } if (e.Cell.Column.Key.Equals("BASE_DESC")) { this.ultraComboEditor5.Text = ugr.Cells["BASE_DESC"].Text.ToString(); ugr.Cells["BASE_CODE"].Value = this.ultraComboEditor5.Value.ToString(); } if (e.Cell.Column.Key.Equals("ITEM_DESC")) { this.ultraComboEditor6.Text = ugr.Cells["ITEM_DESC"].Text.ToString(); ugr.Cells["ITEM_CODE"].Value = this.ultraComboEditor6.Value.ToString(); } if (e.Cell.Column.Key.Equals("NOTE_DESC")) { this.ultraComboEditor7.Text = ugr.Cells["NOTE_DESC"].Text.ToString(); ugr.Cells["NOTE_CODE"].Value = this.ultraComboEditor7.Value.ToString(); } } /// /// 获取界面上的数据 /// /// 0成功,-1失败 private int GetGridData() {//获取主表的数据 int checkflag = 0; double max1 = 0; double min1 = 0; double max = 0; double min = 0; this.ultraGrid2.UpdateData(); parentParm = new ArrayList(); childParm = new ArrayList(); parentParmU = new ArrayList(); childParmU = new ArrayList(); UltraGridRow ug = this.ultraGrid1.ActiveRow; if (ug == null) { MessageBox.Show("您没有选择冶金规范码,系统不允许添加", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return -1; } foreach (Infragistics.Win.UltraWinGrid.UltraGridRow row in ultraGrid2.Rows) { if (row.Cells["CHK"].Value.ToString().ToUpper() != "FALSE") { checkflag += 1; if (row.Cells["SIZE_NAME2"].Value.ToString() == "" && row.Cells["SIZE_NAME"].Value.ToString() == "" && row.Cells["SIZE_JG_NAME"].Value.ToString() == "") { MessageBox.Show("请在限制规格描述或接箍规格描述中选择一项数据", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); row.Activate(); return -1; } //限制规格和接箍规格不能同时存在。 if (row.Cells["SIZE_NAME2"].Value.ToString() != "" || row.Cells["SIZE_NAME"].Value.ToString() != "") { if (row.Cells["SIZE_NAME2"].Value.ToString() == row.Cells["SIZE_NAME"].Value.ToString()) { MessageBox.Show("限制规格1描述和限制规格2描述不能一样", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); row.Activate(); return -1; } } if (row.Cells["SIZE_JG_NAME"].Value.ToString().Trim() != "" && (row.Cells["SIZE_NAME2"].Value.ToString().Trim() != "" || row.Cells["SIZE_NAME"].Value.ToString().Trim() != "")) { MessageBox.Show("限制规格和接箍规格不能同时存在", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); row.Activate(); return -1; } if (row.Cells["SIZE_NAME2"].Value.ToString() != "") {//限制规格1描述不为空 if (row.Cells["SIZE_MIN_SIGN2"].Value.ToString() == "" && row.Cells["SIZE_MAX_SIGN2"].Value.ToString() == "") { MessageBox.Show("限制规格1描述存在的情况下,限制规格1上限符号和限制1下限符号至少存在一个", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); row.Activate(); return -1; } else if (row.Cells["SIZE_MIN_SIGN2"].Value.ToString().Trim() != "") { if (row.Cells["SIZE_MIN2"].Value.ToString() == "") { MessageBox.Show("请输入限制规格1下限值", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); row.Activate(); return -1; } } else if (row.Cells["SIZE_MIN_SIGN2"].Value.ToString().Trim() == "") { if (row.Cells["SIZE_MIN2"].Value.ToString().Trim() != "") { MessageBox.Show("限制规格1下限符号不存在,请选择限制规格1下限符号或者清空限制规格1下限值", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); row.Activate(); return -1; } } if (row.Cells["SIZE_MAX_SIGN2"].Value.ToString().Trim() != "") { if (row.Cells["SIZE_MAX2"].Value.ToString().Trim() == "") { MessageBox.Show("请输入限制规格1上限值", "提示"); row.Activate(); return -1; } } else if (row.Cells["SIZE_MAX_SIGN2"].Value.ToString().Trim() == "") { if (row.Cells["SIZE_MAX2"].Value.ToString().Trim() != "") { MessageBox.Show("限制规格1上限符号不存在,请选择限制规格1上限符号或者清空限制规格1上限值", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); row.Activate(); return -1; } } //上下限数值转化 比较大小 if (row.Cells["SIZE_MIN2"].Value.ToString() != "") { if (StringUtil.IsNumber(row.Cells["SIZE_MIN2"].Value.ToString())) { min1 = Convert.ToDouble(row.Cells["SIZE_MIN2"].Value.ToString()); } else if (row.Cells["SIZE_MIN_SIGN2"].Value.ToString().Trim() != "=" && row.Cells["SIZE_MIN_SIGN2"].Value.ToString().Trim() != "") { MessageBox.Show("限制规格1下限请输入数字", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); row.Activate(); return -1; } } if (row.Cells["SIZE_MAX2"].Value.ToString().Trim() != "") { if (StringUtil.IsNumber(row.Cells["SIZE_MAX2"].Value.ToString())) { max1 = Convert.ToDouble(row.Cells["SIZE_MAX2"].Value.ToString()); } else if (row.Cells["SIZE_MAX_SIGN2"].Value.ToString().Trim() != "") { MessageBox.Show("限制规格1上限请输入数字", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); row.Activate(); return -1; } } } else if (row.Cells["SIZE_MIN_SIGN2"].Value.ToString() != "" || row.Cells["SIZE_MAX_SIGN2"].Value.ToString() != "" || row.Cells["SIZE_MIN2"].Value.ToString() != "" || row.Cells["SIZE_MAX2"].Value.ToString() != "") { MessageBox.Show("请选择限制规格1描述,或者清空限制规格1下的数据的值", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); row.Activate(); return -1; } if (min1 > max1 && max1 != 0) { MessageBox.Show("您输入的限制规格1上限值不能小于下限值", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); row.Activate(); return -1; } if (row.Cells["SIZE_NAME"].Value.ToString().Trim() != "") { if (row.Cells["SIZE_MIN_SIGN"].Value.ToString() == "" && row.Cells["SIZE_MAX_SIGN"].Value.ToString() == "") { MessageBox.Show("限制规格2描述存在的情况下,限制规格2上限符号和限制规格2下限符号至少存在一个", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); row.Activate(); return -1; } else if (row.Cells["SIZE_MIN_SIGN"].Value.ToString().Trim() != "") { if (row.Cells["SIZE_MIN"].Value.ToString().Trim() == "") { MessageBox.Show("请输入限制规格2下限值", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); row.Activate(); return -1; } } else if (row.Cells["SIZE_MIN_SIGN"].Value.ToString().Trim() == "") { if (row.Cells["SIZE_MIN"].Value.ToString().Trim() != "") { MessageBox.Show("限制规格2下限符号不存在,请选择限制规格2下限符号或者清空限制规格2下限值", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); row.Activate(); return -1; } } if (row.Cells["SIZE_MAX_SIGN"].Value.ToString().Trim() != "") { if (row.Cells["SIZE_MAX"].Value.ToString().Trim() == "") { MessageBox.Show("请输入限制规格2上限值", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); row.Activate(); return -1; } } else if (row.Cells["SIZE_MAX_SIGN"].Value.ToString().Trim() == "") { if (row.Cells["SIZE_MAX"].Value.ToString().Trim() != "") { MessageBox.Show("限制规格2上限符号不存在,请选择限制规格2上限符号或者清空限制规格2上限值", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); row.Activate(); return -1; } } if (row.Cells["SIZE_MIN"].Value.ToString().Trim() != "") { if (StringUtil.IsNumber(row.Cells["SIZE_MIN"].Value.ToString())) { min = Convert.ToDouble(row.Cells["SIZE_MIN"].Value.ToString()); } else if (row.Cells["SIZE_MIN_SIGN"].Value.ToString().Trim() != "=" && row.Cells["SIZE_MIN_SIGN"].Value.ToString().Trim() != "") { MessageBox.Show("限制规格2下限请输入数字", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); row.Activate(); return -1; } } if (row.Cells["SIZE_MAX"].Value.ToString().Trim() != "") { if (StringUtil.IsNumber(row.Cells["SIZE_MAX"].Value.ToString())) { max = Convert.ToDouble(row.Cells["SIZE_MAX"].Value.ToString()); } else if (row.Cells["SIZE_MAX_SIGN"].Value.ToString().Trim() != "") { MessageBox.Show("限制规格2上限请输入数字", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); row.Activate(); return -1; } } } else if (row.Cells["SIZE_MIN_SIGN"].Value.ToString() != "" || row.Cells["SIZE_MAX_SIGN"].Value.ToString() != "" || row.Cells["SIZE_MIN"].Value.ToString() != "" || row.Cells["SIZE_MAX"].Value.ToString() != "") { MessageBox.Show("请选择限制规格2描述,或者清空限制规格2下的数据的值", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); row.Activate(); return -1; } if (max < min && (max != 0)) { MessageBox.Show("您输入的限制规格2上限值不能小于下限值", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); row.Activate(); return -1; } ArrayList pparm = new ArrayList(); ArrayList pparmU = new ArrayList(); if (row.Cells["VALIDFLAG"].Value.ToString() == "") { pparm.Add(row.Cells["MSC"].Value.ToString()); pparm.Add(row.Cells["INDEX_SEQ"].Value.ToString()); pparm.Add(row.Cells["MODEL_CODE"].Value.ToString()); pparm.Add(row.Cells["MODEL_DESC"].Value.ToString()); pparm.Add(row.Cells["SIZE_CODE2"].Value.ToString()); pparm.Add(row.Cells["SIZE_NAME2"].Text); pparm.Add(row.Cells["SIZE_MIN_SIGN2"].Value.ToString()); pparm.Add(row.Cells["SIZE_MIN2"].Value.ToString()); pparm.Add(row.Cells["SIZE_MAX_SIGN2"].Value.ToString()); pparm.Add(row.Cells["SIZE_MAX2"].Value.ToString()); pparm.Add(row.Cells["SIZE_CODE"].Value.ToString()); pparm.Add(row.Cells["SIZE_NAME"].Text); pparm.Add(row.Cells["SIZE_MIN_SIGN"].Value.ToString()); pparm.Add(row.Cells["SIZE_MIN"].Value.ToString()); pparm.Add(row.Cells["SIZE_MAX_SIGN"].Value.ToString()); pparm.Add(row.Cells["SIZE_MAX"].Value.ToString()); pparm.Add(row.Cells["SIZE_JG_CODE"].Value.ToString()); pparm.Add(row.Cells["SIZE_JG_NAME"].Text); pparm.Add(this.UserInfo.GetUserName()); pparm.Add(row.Cells["MEMO"].Value.ToString()); parentParm.Add(pparm); } if (row.Cells["VALIDFLAG"].Value.ToString() != "") { pparmU.Add(row.Cells["MSC"].Value.ToString()); pparmU.Add(row.Cells["INDEX_SEQ"].Value.ToString()); pparmU.Add(row.Cells["MODEL_CODE"].Value.ToString()); pparmU.Add(row.Cells["MODEL_DESC"].Value.ToString()); pparmU.Add(row.Cells["SIZE_CODE2"].Value.ToString()); pparmU.Add(row.Cells["SIZE_NAME2"].Text); pparmU.Add(row.Cells["SIZE_MIN_SIGN2"].Value.ToString()); pparmU.Add(row.Cells["SIZE_MIN2"].Value.ToString()); pparmU.Add(row.Cells["SIZE_MAX_SIGN2"].Value.ToString()); pparmU.Add(row.Cells["SIZE_MAX2"].Value.ToString()); pparmU.Add(row.Cells["SIZE_CODE"].Value.ToString()); pparmU.Add(row.Cells["SIZE_NAME"].Text); pparmU.Add(row.Cells["SIZE_MIN_SIGN"].Value.ToString()); pparmU.Add(row.Cells["SIZE_MIN"].Value.ToString()); pparmU.Add(row.Cells["SIZE_MAX_SIGN"].Value.ToString()); pparmU.Add(row.Cells["SIZE_MAX"].Value.ToString()); pparmU.Add(row.Cells["SIZE_JG_CODE"].Value.ToString()); pparmU.Add(row.Cells["SIZE_JG_NAME"].Text); pparmU.Add(this.UserInfo.GetUserName()); pparmU.Add(row.Cells["MEMO"].Value.ToString()); parentParmU.Add(pparmU); } } if (row.ChildBands[0].Rows.Count > 0) { for (int i = 0; i < row.ChildBands[0].Rows.Count; i++) { Infragistics.Win.UltraWinGrid.UltraGridRow crow = row.ChildBands[0].Rows[i]; if (Convert.ToBoolean(crow.Cells["CHK"].Value)) { checkflag += 1; if (crow.Cells["BASE_DESC"].Value.ToString() == "") { MessageBox.Show("请选择包装项大类描述", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); crow.Activate(); return -1; } if (crow.Cells["ITEM_DESC"].Value.ToString() == "") { MessageBox.Show("请选择包装项目描述", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); crow.Activate(); return -1; } if (crow.Cells["NOTE_DESC"].Value.ToString() == "") { MessageBox.Show("请选择包装要求描述", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); crow.Activate(); return -1; } ArrayList cparm = new ArrayList(); ArrayList cparmU = new ArrayList(); if (crow.Cells["VALIDFLAG"].Value.ToString() == "") { cparm.Add(crow.Cells["MSC"].Value.ToString()); cparm.Add(crow.Cells["INDEX_SEQ"].Value.ToString()); cparm.Add(crow.Cells["INDEX_SEQ_C"].Value.ToString()); cparm.Add(crow.Cells["BASE_CODE"].Value.ToString()); cparm.Add(crow.Cells["BASE_DESC"].Text); cparm.Add(crow.Cells["ITEM_CODE"].Value.ToString()); cparm.Add(crow.Cells["ITEM_DESC"].Text); cparm.Add(crow.Cells["NOTE_CODE"].Value.ToString()); cparm.Add(crow.Cells["NOTE_DESC"].Text); cparm.Add(this.UserInfo.GetUserName()); cparm.Add(crow.Cells["MEMO"].Value.ToString()); childParm.Add(cparm); } if (crow.Cells["VALIDFLAG"].Value.ToString() != "") { cparmU.Add(crow.Cells["MSC"].Value.ToString()); cparmU.Add(crow.Cells["INDEX_SEQ"].Value.ToString()); cparmU.Add(crow.Cells["INDEX_SEQ_C"].Value.ToString()); cparmU.Add(crow.Cells["BASE_CODE"].Value.ToString()); cparmU.Add(crow.Cells["BASE_DESC"].Text); cparmU.Add(crow.Cells["ITEM_CODE"].Value.ToString()); cparmU.Add(crow.Cells["ITEM_DESC"].Text); cparmU.Add(crow.Cells["NOTE_CODE"].Value.ToString()); cparmU.Add(crow.Cells["NOTE_DESC"].Text); cparmU.Add(this.UserInfo.GetUserName()); cparmU.Add(crow.Cells["MEMO"].Value.ToString()); childParmU.Add(cparmU); } } } } } if (checkflag == 0) { MessageBox.Show("请选择需要操作的记录!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return -1; } return 0; } /// /// 查询 /// /// false有效数据 true有效+无效数据 private void doQuery(bool flag) { bool validFlag = flag; UltraGridRow ugr = ultraGrid1.ActiveRow; dataTable2.Clear(); dataTable1.Clear(); string msc = ugr.Cells["MSC"].Value.ToString().Trim(); DataTable parentdt = ServerHelper.GetData("com.steering.pss.qcm.PackAndMSC.doQuery", new Object[] { validFlag, msc }, this.ob); GridHelper.CopyDataToDatatable(ref parentdt, ref this.dataTable1, true); if (parentdt != null && parentdt.Rows.Count > 0) { ultraGrid2.Rows[0].Activate(); //默认激活首行。 } //从表的记录也要查询出来。 DataTable childdt = ServerHelper.GetData("com.steering.pss.qcm.PackAndMSC.doQuery1", new Object[] { validFlag, msc }, this.ob); GridHelper.CopyDataToDatatable(ref childdt, ref this.dataTable2, true); UltraGridColumn[] col = new UltraGridColumn[] { this.ultraGrid2.DisplayLayout.Bands[0].Columns["MEMO"] , this.ultraGrid2.DisplayLayout.Bands[0].Columns["SIZE_NAME2"] , this.ultraGrid2.DisplayLayout.Bands[0].Columns["SIZE_NAME"] , this.ultraGrid2.DisplayLayout.Bands[1].Columns["BASE_DESC"], this.ultraGrid2.DisplayLayout.Bands[1].Columns["ITEM_DESC"] , this.ultraGrid2.DisplayLayout.Bands[1].Columns["NOTE_DESC"],this.ultraGrid2.DisplayLayout.Bands[0].Columns["MODEL_DESC"] ,this.ultraGrid2.DisplayLayout.Bands[1].Columns["MEMO"] }; GridHelper.RefreshAndAutoSizeExceptRows(ultraGrid2, col); //不同颜色区分是否有效数据 Infragistics.Win.UltraWinGrid.UltraGridRow row = null; Infragistics.Win.UltraWinGrid.UltraGridRow minrow = null; for (int i = 0; i < ultraGrid2.Rows.Count; i++) { for (int j = 1; j < ultraGrid2.Rows[i].Cells.Count; j++) { ultraGrid2.Rows[i].Cells[j].Activation = Infragistics.Win.UltraWinGrid.Activation.ActivateOnly; } //主表每一行除了第一列外都不可编辑。 row = ultraGrid2.Rows[i]; if (row.ChildBands[0].Rows.Count > 0) //子表 { for (int j = 0; j < row.ChildBands[0].Rows.Count; j++) { minrow = row.ChildBands[0].Rows[j]; for (int k = 1; k < minrow.Cells.Count; k++) { minrow.Cells[k].Activation = Infragistics.Win.UltraWinGrid.Activation.ActivateOnly; }//主表每一行除了第一列外都不可编辑。 if (!minrow.Cells["VALIDFLAG"].Value.ToString().Equals("有效")) { minrow.Appearance.ForeColor = Color.Red; row.ExpandAll(); //展开主表 row.Activate(); } else { minrow.Appearance.ForeColor = Color.Black; } } } if (!row.Cells["VALIDFLAG"].Value.ToString().Equals("有效")) //主表 { row.Appearance.ForeColor = Color.Red; } else { row.Appearance.ForeColor = Color.Black; } } } /// /// 保存数据(新增+修改) /// private void doSave() { if (GetGridData() == 0 && (parentParm.Count > 0 || childParm.Count > 0 || parentParmU.Count > 0 || childParmU.Count > 0)) { if (MessageBox.Show("是否确认保存修改?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) { return; } CoreClientParam ccp = new CoreClientParam(); //CoreClientParam是平台用来向服务端传递存放所有相关参数信息的。 ccp.ServerName = "com.steering.pss.qcm.PackAndMSC"; //服务名指的是服务端的包名+类名 ccp.MethodName = "doSave"; //方法名指的是服务名指定类里的方法 ccp.ServerParams = new object[] { parentParm, childParm, parentParmU, childParmU };//服务端方法的参数 //ExecuteNonQuery主要用来执行添加、修改、删除、存储过程的操作。 ccp = this.ExecuteNonQuery(ccp, CoreInvokeType.Internal); if (ccp.ReturnCode == -1) return; MessageBox.Show("保存成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); doQuery(false); ExpandRow(); MSCCodes.Clear(); } } /// /// 删除和恢复 /// /// true删除 false恢复 private void doDeleteOrResume(bool flag) { parentParm = new ArrayList(); childParm = new ArrayList(); if (flag) { int deleteflag = 0; ultraGrid2.UpdateData(); ArrayList pparam = new ArrayList(); ArrayList cparam = new ArrayList(); foreach (Infragistics.Win.UltraWinGrid.UltraGridRow row in ultraGrid2.Rows) { pparam = new ArrayList(); cparam = new ArrayList(); //主表勾选了,从表跟着删除。 if (row.Cells["CHK"].Value.ToString().ToUpper() == "TRUE") { deleteflag += 1; pparam.Add(this.UserInfo.GetUserName()); pparam.Add(row.Cells["MSC"].Value.ToString()); pparam.Add(row.Cells["INDEX_SEQ"].Value.ToString()); cparam.Add(this.UserInfo.GetUserName()); cparam.Add(row.Cells["MSC"].Value.ToString()); cparam.Add(row.Cells["INDEX_SEQ"].Value.ToString()); parentParm.Add(pparam); childParm.Add(cparam); } //主表未勾选,从表勾选了。主表是半选状态 else if (row.ChildBands[0].Rows.Count > 0 && row.Cells["CHK"].Value.ToString().ToUpper() == "") { for (int i = 0; i < row.ChildBands[0].Rows.Count; i++) { cparam = new ArrayList(); Infragistics.Win.UltraWinGrid.UltraGridRow crow = row.ChildBands[0].Rows[i]; if (Convert.ToBoolean(crow.Cells["CHK"].Value)) { deleteflag += 1; cparam.Add(this.UserInfo.GetUserName()); cparam.Add(crow.Cells["MSC"].Value.ToString()); cparam.Add(crow.Cells["INDEX_SEQ"].Value.ToString()); cparam.Add(crow.Cells["INDEX_SEQ_C"].Value.ToString()); childParm.Add(cparam); } } } } if (deleteflag == 0) { MessageBox.Show("请选择需要操作的记录!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } if (MessageBox.Show("是否确认作废勾选的数据?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) { return; } CoreClientParam ccp = new CoreClientParam(); //CoreClientParam是平台用来向服务端传递存放所有相关参数信息的。 ccp.ServerName = "com.steering.pss.qcm.PackAndMSC"; //服务名指的是服务端的包名+类名 ccp.MethodName = "doDelete"; //方法名指的是服务名指定类里的方法 ccp.ServerParams = new object[] { parentParm, childParm };//服务端方法的参数 ccp = this.ExecuteNonQuery(ccp, CoreInvokeType.Internal); if (ccp.ReturnCode == -1) return; MessageBox.Show("作废成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); doQuery(false); ExpandRow(); MSCCodes.Clear(); } else { ultraGrid2.UpdateData(); int resumeflag = 0; foreach (Infragistics.Win.UltraWinGrid.UltraGridRow row in ultraGrid2.Rows) { ArrayList pparam = new ArrayList(); ArrayList cparam = new ArrayList(); //主表勾选了,从表未勾选,只恢复主表信息。(允许主表存在,从表不存在) if (row.Cells["CHK"].Value.ToString().ToUpper() != "FALSE") { resumeflag += 1; pparam.Add(row.Cells["MSC"].Value.ToString()); pparam.Add(row.Cells["INDEX_SEQ"].Value.ToString()); parentParm.Add(pparam); //主表未勾选,从表勾选了。主表未恢复,从表不能恢复。(主表不存在,从表不可能存在) if (row.ChildBands[0].Rows.Count > 0) { for (int i = 0; i < row.ChildBands[0].Rows.Count; i++) { cparam = new ArrayList(); Infragistics.Win.UltraWinGrid.UltraGridRow crow = row.ChildBands[0].Rows[i]; if (Convert.ToBoolean(crow.Cells["CHK"].Value)) { resumeflag += 1; cparam.Add(crow.Cells["MSC"].Value.ToString()); cparam.Add(crow.Cells["INDEX_SEQ"].Value.ToString()); cparam.Add(crow.Cells["INDEX_SEQ_C"].Value.ToString()); childParm.Add(cparam); } } } } else if (row.Cells["VALIDFLAG"].Value.ToString() == "有效") { for (int i = 0; i < row.ChildBands[0].Rows.Count; i++) { cparam = new ArrayList(); Infragistics.Win.UltraWinGrid.UltraGridRow crow = row.ChildBands[0].Rows[i]; if (Convert.ToBoolean(crow.Cells["CHK"].Value)) { resumeflag += 1; cparam.Add(crow.Cells["MSC"].Value.ToString()); cparam.Add(crow.Cells["INDEX_SEQ"].Value.ToString()); cparam.Add(crow.Cells["INDEX_SEQ_C"].Value.ToString()); childParm.Add(cparam); } } } } if (resumeflag == 0) { MessageBox.Show("请选择需要操作的记录!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } if (MessageBox.Show("是否确认恢复勾选的数据?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) { return; } CoreClientParam ccp = new CoreClientParam(); //CoreClientParam是平台用来向服务端传递存放所有相关参数信息的。 ccp.ServerName = "com.steering.pss.qcm.PackAndMSC"; //服务名指的是服务端的包名+类名 ccp.MethodName = "doResume"; //方法名指的是服务名指定类里的方法 ccp.ServerParams = new object[] { parentParm, childParm };//服务端方法的参数 ccp = this.ExecuteNonQuery(ccp, CoreInvokeType.Internal); if (ccp.ReturnCode == -1) return; MessageBox.Show("恢复成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); doQuery(false); ExpandRow(); MSCCodes.Clear(); } } private void ultraGrid2_CellChange(object sender, CellEventArgs e) {//主表和从表的选择列都叫"CHK" this.ultraGrid2.UpdateData(); //主表勾选,从表全选。 if (e.Cell.Column.Key.Equals("CHK")) { if (!e.Cell.Row.HasParent()) { foreach (UltraGridRow row in e.Cell.Row.ChildBands[0].Rows) { row.Cells["CHK"].Value = e.Cell.Value; //从表状态全选或不全选 for (int k = 1; k < row.Cells.Count; k++) {//同时改变从表选上后的可编辑状态 if (Convert.ToBoolean(e.Cell.Value)) { if (k == 5 || k == 7 || k == 9) { row.Cells[k].Activation = Infragistics.Win.UltraWinGrid.Activation.AllowEdit; row.Cells["MEMO"].Activation = Infragistics.Win.UltraWinGrid.Activation.AllowEdit; } } else { row.Cells[k].Activation = Infragistics.Win.UltraWinGrid.Activation.ActivateOnly; } } } if (Convert.ToBoolean(e.Cell.Value)) { if (e.Cell.Row.ChildBands[0].Rows.Count > 0) { e.Cell.Row.ExpandAll(); } for (int j = 1; j < e.Cell.Row.Cells.Count; j++) { if ((j > 5) && (j < 19) && j != 11 && j != 17) { e.Cell.Row.Cells[j].Activation = Infragistics.Win.UltraWinGrid.Activation.AllowEdit; e.Cell.Row.Cells["MEMO"].Activation = Infragistics.Win.UltraWinGrid.Activation.AllowEdit; } } } else { for (int t = 1; t < e.Cell.Row.Cells.Count; t++) { e.Cell.Row.Cells[t].Activation = Infragistics.Win.UltraWinGrid.Activation.ActivateOnly; } } } else //(e.Cell.Row.HasParent()) { int flag = 0; //判断从表状态参数 foreach (UltraGridRow row in e.Cell.Row.ParentRow.ChildBands[0].Rows) { if (Convert.ToBoolean(row.Cells["CHK"].Value)) { flag += 1; //从表勾选了 状态参数+1 } } if (flag < e.Cell.Row.ParentRow.ChildBands[0].Rows.Count && flag != 0) {//状态参数小于从表的行数,说明未全勾选,主表为半选状态 e.Cell.Row.ParentRow.Cells["CHK"].Value = null; for (int j = 1; j < e.Cell.Row.ParentRow.Cells.Count; j++) { if ((j > 5) && (j < 19) && j != 11 && j != 17) { e.Cell.Row.ParentRow.Cells[j].Activation = Infragistics.Win.UltraWinGrid.Activation.AllowEdit; e.Cell.Row.ParentRow.Cells["MEMO"].Activation = Infragistics.Win.UltraWinGrid.Activation.AllowEdit; } } } else if (flag == 0) //从表取消全部勾选,主表不勾选 {//为了能够只恢复主表一条记录,主表状态为半选。 //e.Cell.Row.ParentRow.Cells["CHK"].Value = false; } else //否则主表为全选状态 {//为了只操作全部从表记录,删除等,这里再次改为半选。 e.Cell.Row.ParentRow.Cells["CHK"].Value = null; for (int j = 1; j < e.Cell.Row.ParentRow.Cells.Count; j++) { if ((j > 5) && (j < 19) && j != 11 && j != 17) { e.Cell.Row.ParentRow.Cells[j].Activation = Infragistics.Win.UltraWinGrid.Activation.AllowEdit; } } } if (Convert.ToBoolean(e.Cell.Value)) { for (int k = 1; k < e.Cell.Row.Cells.Count; k++) { if (k == 5 || k == 7 || k == 9) { e.Cell.Row.Cells[k].Activation = Infragistics.Win.UltraWinGrid.Activation.AllowEdit; e.Cell.Row.Cells["MEMO"].Activation = Infragistics.Win.UltraWinGrid.Activation.AllowEdit; } } } else { for (int k = 1; k < e.Cell.Row.Cells.Count; k++) { e.Cell.Row.Cells[k].Activation = Infragistics.Win.UltraWinGrid.Activation.ActivateOnly; } } } } if (e.Cell.Column.Key.Equals("SIZE_NAME2")) { if (e.Cell.Value.ToString() == "") { e.Cell.Row.Cells["SIZE_MIN_SIGN2"].Value = ""; e.Cell.Row.Cells["SIZE_MIN2"].Value = ""; e.Cell.Row.Cells["SIZE_MAX_SIGN2"].Value = ""; e.Cell.Row.Cells["SIZE_MAX2"].Value = ""; } } if (e.Cell.Column.Key.Equals("SIZE_NAME")) { if (e.Cell.Value.ToString() == "") { e.Cell.Row.Cells["SIZE_MIN_SIGN"].Value = ""; e.Cell.Row.Cells["SIZE_MIN"].Value = ""; e.Cell.Row.Cells["SIZE_MAX_SIGN"].Value = ""; e.Cell.Row.Cells["SIZE_MAX"].Value = ""; } } if (e.Cell.Column.Key.Equals("SIZE_MIN2")) { if (e.Cell.Row.Cells["SIZE_MIN_SIGN2"].Value.ToString().Trim() == "=" && !StringUtil.IsNumber(e.Cell.Value.ToString())) { e.Cell.Row.Cells["SIZE_MAX_SIGN2"].Activation = Infragistics.Win.UltraWinGrid.Activation.ActivateOnly; e.Cell.Row.Cells["SIZE_MAX2"].Activation = Infragistics.Win.UltraWinGrid.Activation.ActivateOnly; } else { e.Cell.Row.Cells["SIZE_MAX_SIGN2"].Activation = Infragistics.Win.UltraWinGrid.Activation.AllowEdit; e.Cell.Row.Cells["SIZE_MAX2"].Activation = Infragistics.Win.UltraWinGrid.Activation.AllowEdit; } } if (e.Cell.Column.Key.Equals("SIZE_MIN")) { if (e.Cell.Row.Cells["SIZE_MIN_SIGN"].Value.ToString().Trim() == "=" && !StringUtil.IsNumber(e.Cell.Value.ToString())) { e.Cell.Row.Cells["SIZE_MAX_SIGN"].Activation = Infragistics.Win.UltraWinGrid.Activation.ActivateOnly; e.Cell.Row.Cells["SIZE_MAX"].Activation = Infragistics.Win.UltraWinGrid.Activation.ActivateOnly; } else { e.Cell.Row.Cells["SIZE_MAX_SIGN"].Activation = Infragistics.Win.UltraWinGrid.Activation.AllowEdit; e.Cell.Row.Cells["SIZE_MAX"].Activation = Infragistics.Win.UltraWinGrid.Activation.AllowEdit; } } SaveMSCCode(e); } /// /// 保存操作的冶金规范码+序号 /// /// private void SaveMSCCode(CellEventArgs e) { if (e.Cell.Row.HasParent()) { if (e.Cell.Row.Cells["CHK"].Value.ToString().ToUpper() == "TRUE" && !MSCCodes.Contains(e.Cell.Row.Cells["MSC"].Value.ToString() + "," + e.Cell.Row.Cells["INDEX_SEQ"].Value.ToString())) { MSCCodes.Add(e.Cell.Row.Cells["MSC"].Value.ToString() + "," + e.Cell.Row.Cells["INDEX_SEQ"].Value.ToString()); } } else if (e.Cell.Row.ChildBands[0].Rows.Count > 0) { if (e.Cell.Row.Cells["CHK"].Value.ToString().ToUpper() != "FALSE" && !MSCCodes.Contains(e.Cell.Row.Cells["MSC"].Value.ToString() + "," + e.Cell.Row.Cells["INDEX_SEQ"].Value.ToString())) { MSCCodes.Add(e.Cell.Row.Cells["MSC"].Value.ToString() + "," + e.Cell.Row.Cells["INDEX_SEQ"].Value.ToString()); } } } /// /// 展开某一行 /// private void ExpandRow() { foreach (UltraGridRow row in ultraGrid2.Rows) { if (MSCCodes.Contains(row.Cells["MSC"].Value.ToString() + "," + row.Cells["INDEX_SEQ"].Value.ToString())) { row.ExpandAll(); row.Activate(); } } } } }