using Core.Mes.Client.Comm; 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 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 FrmSpecificationsBasicsNew : FrmBase { private string strMaxSvrSpec_Code = ""; private string strMaxSvrOrder_Spec_Code = ""; private List _chooseCodes = new List(); private bool _exporting = false; public FrmSpecificationsBasicsNew() { InitializeComponent(); ExceptionHelper.RegistException(); } private void FrmSpecificationsBasicsNew_Load(object sender, EventArgs e) { BindcmbType(); } private void BindcmbType() { //cmbBindType //类型(A钢管(必须要填外径壁厚)、B管坯(只允许填外径)、C其它(要走接箍或附件的,不能填外径壁厚)) DataTable dt = new DataTable(); dt.Columns.Add("id"); dt.Columns.Add("name"); DataRow dr = dt.NewRow(); dr["id"] = "A"; dr["name"] = "钢管"; DataRow drB = dt.NewRow(); drB["id"] = "B"; drB["name"] = "管坯"; DataRow drC = dt.NewRow(); drC["id"] = "C"; drC["name"] = "其它"; dt.Rows.Add(dr); dt.Rows.Add(drB); dt.Rows.Add(drC); cmbBindType.DataSource = dt; cmbBindType.DisplayMember = "name"; cmbBindType.ValueMember = "id"; } public override void ToolBar_Click(object sender, string ToolbarKey) { switch (ToolbarKey) { case "doQuery": try { this.Cursor = Cursors.WaitCursor; doQuery(); } finally { this.Cursor = Cursors.Default; } break; case "doSave": if (CheckData() == true) { doSave(); } break; case "doModify": doModify(); break; case "doDelete": this.doDeleteOrResume(true); break; case "doResume": this.doDeleteOrResume(false); break; case "Export": Export(); break; case "Close": this.Close(); break; } } private void Export() { _exporting = true; GridHelper.ulGridToExcel(ultraGrid2, "产品规格"); _exporting = false; } private void ExpandRow() { foreach (UltraGridRow row in ultraGrid2.Rows) { if (_chooseCodes.Contains(row.Cells["SPEC_CODE"].Value.ToString())) { row.Activate(); row.ExpandAll(); } } } private bool CheckData() { ultraGrid2.UpdateData(); DataRow[] drs = dataTable1.Select("CHK = 'True'"); DataRow[] drs2 = dataTable2.Select("CHK = 'True'"); List insertSpecNames = new List(); List insertOrder_SpecNames = new List(); foreach (DataRow dr in drs) { if (dr["MSC_STYLE"].ToString() == "") { MessageBox.Show("您所要保存的数据中,类型不能为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return false; } if (dr["MSC_STYLE"].ToString() == "A" && dr["DIMATER"].ToString() == "") { MessageBox.Show("您所要保存的数据中,外径不能为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return false; } else if (dr["MSC_STYLE"].ToString() == "A" && dr["HEIGHT"].ToString() == "") { MessageBox.Show("您所要保存的数据中,壁厚不能为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return false; } decimal dcm = 0.0M; if (dr["DIMATER"].ToString() != "" && decimal.TryParse(dr["DIMATER"].ToString(), out dcm) == false) { MessageBox.Show("您所要保存的数据中,外径输入的不是数字类型!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return false; } if (dr["HEIGHT"].ToString() != "" && decimal.TryParse(dr["HEIGHT"].ToString(), out dcm) == false) { MessageBox.Show("您所要保存的数据中,壁厚输入的不是数字类型!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return false; } if (dr["WEIGHT"].ToString() != "" && decimal.TryParse(dr["WEIGHT"].ToString(), out dcm) == false) { MessageBox.Show("您所要保存的数据中,米单重输入的不是数字类型!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return false; } if (dr["SPEC_NAME"].ToString() == "") { MessageBox.Show("您所要保存的数据中,产品规格描述不能为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return false; } else if (IsExistSpec(dr["SPEC_NAME"].ToString(), dr["SPEC_CODE"].ToString()) == true) { MessageBox.Show("已存在产品规格描述-[" + dr["SPEC_NAME"].ToString() + "]!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return false; } if (insertSpecNames.Contains(dr["SPEC_NAME"].ToString())) { MessageBox.Show("您所要保存的数据中,出现重复的产品规格描述-[" + dr["SPEC_NAME"].ToString() + "]!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return false; } insertSpecNames.Add(dr["SPEC_NAME"].ToString()); } foreach (DataRow dr in drs2) { if (dr["ORDER_SPEC_DESC"].ToString() == "") { MessageBox.Show("您所要保存的数据中,订货规格描述不能为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return false; } else if (IsExistOrderSpec(dr["ORDER_SPEC_DESC"].ToString(), dr["ORDER_SPEC_CODE"].ToString()) == true) { MessageBox.Show("已存在订货规格描述-" + dr["ORDER_SPEC_DESC"].ToString() + "!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return false; } if (insertOrder_SpecNames.Contains(dr["ORDER_SPEC_DESC"].ToString())) { MessageBox.Show("您所要保存的数据中,出现重复的订货规格描述-[" + dr["ORDER_SPEC_DESC"].ToString() + "]!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return false; } insertOrder_SpecNames.Add(dr["ORDER_SPEC_DESC"].ToString()); } return true; } private bool IsExistSpec(string spec, string specCode) { ArrayList list = new ArrayList(); list.Add(spec); list.Add(specCode); DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.CoreSpecBasicsNew.isExistSpec", new object[] { list }, ob); if (dt == null) { return true; } else if (dt != null && dt.Rows[0][0].ToString() == "0") { return false; } return true; } private bool IsExistOrderSpec(string orderSpec, string orderSpecCode) { ArrayList list = new ArrayList(); list.Add(orderSpec); list.Add(orderSpecCode); DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.CoreSpecBasicsNew.isExistOrderSpec", new object[] { list }, ob); if (dt == null) { return true; } else if (dt != null && dt.Rows[0][0].ToString() == "0") { return false; } return true; } private void doAdd() { //获取新增加的行。 ultraGrid2.UpdateData(); ArrayList parms = new ArrayList(); //判断是否勾选。 for (int i = 0; i < ultraGrid2.Rows.Count; i++) { if ((Boolean)ultraGrid2.Rows[i].Cells["cb"].Value) { //绑定就按杨总的那种方式。 //就在这里面判断类型。假设是类型A。则判断外径壁厚是否为空,假设为空,同上弹出提示信息,终止操作。 //类型(A钢管(必须要填外径壁厚)、B管坯(只允许填外径)、C其它(要走接箍或附件的,不能填外径壁厚)) string type = ultraGrid2.Rows[i].Cells["MSC_STYLE"].Value.ToString(); //把外径、壁厚取出来。 //外径 string dimater = ultraGrid2.Rows[i].Cells["DIMATER"].Value.ToString(); //壁厚HEIGHT string height = ultraGrid2.Rows[i].Cells["HEIGHT"].Value.ToString(); if ("A".Equals(type)) { if ("".Equals(dimater) || "".Equals(height)) { MessageBox.Show("钢管类别,壁厚和外径不允许为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } } else if ("B".Equals(type)) { //只允许填外径 if ("".Equals(dimater) || !"".Equals(height)) { MessageBox.Show("管坯类别,外径不允许为空,壁厚只能为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } } else if ("C".Equals(type)) { if (!"".Equals(dimater) || !"".Equals(height)) { MessageBox.Show("其它类别,外径壁厚不可填!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } } //构建ArrayList,添加到parms当中。 ArrayList parm = new ArrayList(); //PRODUCCODEID不能重复。 //parm.Add(SPEC_CODE); parm.Add(ultraGrid2.Rows[i].Cells["SPEC_NAME"].Value.ToString()); parm.Add(ultraGrid2.Rows[i].Cells["DIMATER"].Value.ToString()); parm.Add(ultraGrid2.Rows[i].Cells["HEIGHT"].Value.ToString()); parm.Add(ultraGrid2.Rows[i].Cells["WEIGHT"].Value.ToString()); parm.Add(ultraGrid2.Rows[i].Cells["MSC_STYLE"].Value.ToString()); //创建人应为当前操作用户。 //parm.Add(ultraGrid1.ActiveRow.Cells["create_name"].Value.ToString()); parm.Add(this.UserInfo.GetUserName()); //创建时间为当前时间。 parm.Add(DateTime.Now.ToString()); //扣型状态为录入状态,0为无效,1为有效。 parm.Add(1); parm.Add(ultraGrid2.Rows[i].Cells["MEMO"].Value.ToString()); parms.Add(parm); if (ultraGrid2.Rows[i].ChildBands[0].Rows.Count > 0) { //ultraGrid2.UpdateData(); ArrayList minParms = new ArrayList(); for (int j = 0; j < ultraGrid2.Rows[i].ChildBands[0].Rows.Count; j++) { Infragistics.Win.UltraWinGrid.UltraGridRow minrow = ultraGrid2.Rows[i].ChildBands[0].Rows[j]; if ((Boolean)minrow.Cells["spchk"].Value) { //表示子表子项已经选中 //实现子表子项的修改操作,批量操作。 //ORDER_SPEC_CODE,ORDER_SPEC_DESC,SPEC_CODE, //SPEC_NAME,CREATE_NAME,CREATE_TIME,UPDATE_NAME, //UPDATE_TIME,DELETE_NAME ,DELETE_TIME,VALIDFLAG,MEMO ArrayList minParm = new ArrayList(); minParm.Add(minrow.Cells["ORDER_SPEC_CODE"].Value.ToString()); minParm.Add(minrow.Cells["ORDER_SPEC_DESC"].Value.ToString()); minParm.Add(ultraGrid2.Rows[i].Cells["SPEC_CODE"].Value.ToString()); minParm.Add(ultraGrid2.Rows[i].Cells["SPEC_NAME"].Value.ToString()); minParm.Add(this.UserInfo.GetUserName()); minParm.Add(DateTime.Now.ToString()); minParm.Add(minrow.Cells["memo"].Value.ToString()); //添加到parms当中。 minParms.Add(minParm); } } //操作数据库,实现从表的修改。 if (minParms.Count > 0) { CoreClientParam minccp = new CoreClientParam(); //服务端的包名+类名 minccp.ServerName = "com.steering.pss.qcm.CoreSpecOrderBasics"; //类里的方法名 minccp.MethodName = "doModify"; minccp.ServerParams = new object[] { minParms }; minccp = this.ExecuteNonQuery(minccp, CoreInvokeType.Internal); if (minccp.ReturnCode == -1) return; } } } } CoreClientParam ccp = new CoreClientParam(); //服务端的包名+类名 ccp.ServerName = "com.steering.pss.qcm.CoreSpecBasicsNew"; //类里的方法名 ccp.MethodName = "doAdd"; ccp.ServerParams = new object[] { parms }; ccp = this.ExecuteNonQuery(ccp, CoreInvokeType.Internal); if (ccp.ReturnCode == -1) return; MessageBox.Show("新增成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); doQuery(); } /// /// 删除或恢复 /// /// true删除 false恢复 private void doDeleteOrResume(bool isDelete) { ultraGrid2.UpdateData(); ArrayList param = new ArrayList(); ArrayList minParam = new ArrayList(); int chkCount = 0; foreach (Infragistics.Win.UltraWinGrid.UltraGridRow row in ultraGrid2.Rows) { //主表勾选了,从表跟着删除。 if (Convert.ToBoolean(row.Cells["cb"].Value)) { param.Add(row.Cells["SPEC_CODE"].Value.ToString()); chkCount++; foreach (Infragistics.Win.UltraWinGrid.UltraGridRow minrow in row.ChildBands[0].Rows) { minParam.Add(minrow.Cells["ORDER_SPEC_CODE"].Value.ToString()); chkCount++; } } else { //主表未勾选,从表勾选了,照样删除。 foreach (Infragistics.Win.UltraWinGrid.UltraGridRow minrow in row.ChildBands[0].Rows) { if ((Boolean)minrow.Cells["spchk"].Value) { minParam.Add(minrow.Cells["ORDER_SPEC_CODE"].Value.ToString()); chkCount++; } } } } if (chkCount == 0) { MessageUtil.ShowWarning("请选择数据后再进行操作!"); return; } if (MessageBox.Show("是否" + (isDelete ? "作废" : "恢复") + "选中的数据?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes) { try { int count = 0; if (param.Count > 0) { count = ServerHelper.SetData("com.steering.pss.qcm.CoreSpecBasicsNew.deleteLineInfo", new Object[] { param, UserInfo.GetUserName(), isDelete }, this.ob); } int minCount = 0; if (minParam.Count > 0) { minCount = ServerHelper.SetData("com.steering.pss.qcm.CoreSpecOrderBasics.deleteLineInfo", new Object[] { minParam, UserInfo.GetUserName(), isDelete }, this.ob); } if (count > 0 || minCount > 0) { doQuery(); ExpandRow(); _chooseCodes.Clear(); } } catch (MESException ex) { MessageBox.Show("错误消息:" + ex.ExceptionInfo, "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } private void doSave() { ultraGrid2.UpdateData(); //判断是否有勾选项,没有则提示。 int chkbool = 0; foreach (UltraGridRow row in ultraGrid2.Rows) { if (row.Cells["cb"].Value.ToString().ToUpper() == "TRUE") { chkbool += 1; } foreach (UltraGridRow row2 in row.ChildBands[0].Rows) { if (row2.Cells["spchk"].Value.ToString().ToUpper() == "TRUE") { chkbool += 1; } } } if (chkbool <= 0) { MessageBox.Show("请选择数据后再进行操作!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } //确定保存吗? if (MessageBox.Show("是否确认保存?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.No) { return; } //主表新增组ArrayList ArrayList spbAddParams = new ArrayList(); //主表修改组ArrayList ArrayList spbUpdateParams = new ArrayList(); //从表新增组ArrayList ArrayList spbSupplementAddParams = new ArrayList(); //从表修改组ArrayList ArrayList spbSupplementUpdateParams = new ArrayList(); //遍历主表,判定是否有勾选项。 for (int i = 0; i < this.dataTable1.Rows.Count; i++) { DataRow dr = dataTable1.Rows[i]; if (dr["CHK"].ToString() == "True") { //判定勾选项是新增行,还是修改行。 if (dr.RowState == DataRowState.Added) { //需要根据类型,决定外径和壁厚是否可填。 //类型(A钢管(必须要填外径壁厚)、B管坯(只允许填外径)、C其它(要走接箍或附件的,不能填外径壁厚)) string type = dr["MSC_STYLE"].ToString(); //把外径、壁厚取出来。 //外径 string dimater = dr["DIMATER"].ToString(); //壁厚HEIGHT string height = dr["HEIGHT"].ToString(); //新增行 //将主表勾选项,并且状态为新增的行,构建ArrayList参数,加给spbAddParams组。 ArrayList parm = new ArrayList(); parm.Add(dr["SPEC_CODE"].ToString()); parm.Add(dr["SPEC_NAME"].ToString()); parm.Add(dr["DIMATER"].ToString()); parm.Add(dr["HEIGHT"].ToString()); parm.Add(dr["WEIGHT"].ToString()); parm.Add(dr["MSC_STYLE"].ToString()); parm.Add(this.UserInfo.GetUserName()); parm.Add(DateTime.Now.ToString()); parm.Add(1); parm.Add(dr["MEMO"].ToString()); spbAddParams.Add(parm); } else if (this.dataTable1.Rows[i].RowState == DataRowState.Modified) { //修改行 //将主表勾选项,并且状态为修改的行,构建ArrayList参数,加给spbAddParams组。 ArrayList parm = new ArrayList(); parm.Add(dr["SPEC_NAME"].ToString()); parm.Add(dr["DIMATER"].ToString()); parm.Add(dr["HEIGHT"].ToString()); parm.Add(dr["WEIGHT"].ToString()); parm.Add(dr["MSC_STYLE"].ToString()); parm.Add(this.UserInfo.GetUserName()); parm.Add(DateTime.Now.ToString()); parm.Add(dr["MEMO"].ToString()); parm.Add(dr["SPEC_CODE"].ToString()); spbUpdateParams.Add(parm); } } } //直接遍历从表所有行,判定是否有选中项。 for (int j = 0; j < dataTable2.Rows.Count; j++) { DataRow minrow = dataTable2.Rows[j]; if (minrow["CHK"].ToString() == "True") { if (minrow.RowState == DataRowState.Added) { ArrayList minParm = new ArrayList(); minParm.Add(minrow["ORDER_SPEC_CODE"].ToString()); minParm.Add(minrow["ORDER_SPEC_DESC"].ToString()); //name是冗余字段,不需要。 minParm.Add(minrow["SPEC_CODE"].ToString()); minParm.Add(minrow["SPEC_NAME"].ToString()); minParm.Add(this.UserInfo.GetUserName()); minParm.Add(DateTime.Now.ToString()); minParm.Add(1); minParm.Add(minrow["MEMO"].ToString()); spbSupplementAddParams.Add(minParm); } else if (minrow.RowState == DataRowState.Modified) { ArrayList minParm = new ArrayList(); minParm.Add(minrow["ORDER_SPEC_DESC"].ToString()); minParm.Add(this.UserInfo.GetUserName()); minParm.Add(DateTime.Now.ToString()); minParm.Add(minrow["MEMO"].ToString()); minParm.Add(minrow["ORDER_SPEC_CODE"].ToString()); spbSupplementUpdateParams.Add(minParm); } } } //执行数据库相关操作 CoreClientParam ccp = new CoreClientParam(); //服务端的包名+类名 ccp.ServerName = "com.steering.pss.qcm.CoreSpecBasicsNew"; //类里的方法名 ccp.MethodName = "doSave"; ccp.ServerParams = new object[] { spbAddParams, spbUpdateParams, spbSupplementAddParams, spbSupplementUpdateParams }; try { ccp = this.ExecuteNonQuery(ccp, CoreInvokeType.Internal); } catch (Exception ex) { MessageBox.Show("错误提示:" + ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (ccp.ReturnCode == -1) { return; } else { MessageBox.Show("保存成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); doQuery(); ExpandRow(); _chooseCodes.Clear(); } } private void doModify() { //需要实现批量修改功能。 ultraGrid2.UpdateData(); //dataSet2.Tables[0].Rows[0].RowState == DataRowState.Added; //dataSet2.Tables[0].AcceptChanges(); //DataRowState.Modified; ArrayList parms = new ArrayList(); for (int i = 0; i < ultraGrid2.Rows.Count; i++) { //复选框是否已经选中 if ((Boolean)ultraGrid2.Rows[i].Cells["cb"].Value) { //就在这里面判断类型。假设是类型A。则判断外径壁厚是否为空,假设为空,同上弹出提示信息,终止操作。 //类型(A钢管(必须要填外径壁厚)、B管坯(只允许填外径)、C其它(要走接箍或附件的,不能填外径壁厚)) string type = ultraGrid2.Rows[i].Cells["MSC_STYLE"].Value.ToString(); //把外径、壁厚取出来。 //外径 string dimater = ultraGrid2.Rows[i].Cells["DIMATER"].Value.ToString(); //壁厚HEIGHT string height = ultraGrid2.Rows[i].Cells["HEIGHT"].Value.ToString(); if ("A".Equals(type)) { if ("".Equals(dimater) || "".Equals(height)) { MessageBox.Show("钢管类别,壁厚和外径不允许为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } } else if ("B".Equals(type)) { //只允许填外径 if ("".Equals(dimater) || !"".Equals(height)) { MessageBox.Show("管坯类别,外径不允许为空,壁厚只能为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } } else if ("C".Equals(type)) { if (!"".Equals(dimater) || !"".Equals(height)) { MessageBox.Show("其它类别,外径壁厚不可填!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } } //构建ArrayList,添加到parms当中。 ArrayList parm = new ArrayList(); parm.Add(ultraGrid2.Rows[i].Cells["SPEC_NAME"].Value.ToString()); parm.Add(ultraGrid2.Rows[i].Cells["DIMATER"].Value.ToString()); parm.Add(ultraGrid2.Rows[i].Cells["HEIGHT"].Value.ToString()); parm.Add(ultraGrid2.Rows[i].Cells["WEIGHT"].Value.ToString()); parm.Add(ultraGrid2.Rows[i].Cells["MSC_STYLE"].Value.ToString()); //修改人应该为当前用户。ultraGrid1.ActiveRow.Cells["update_name"].Value.ToString() parm.Add(this.UserInfo.GetUserName()); //修改时间应该为当前时间。ultraGrid1.ActiveRow.Cells["update_time"].Value.ToString() parm.Add(DateTime.Now.ToString()); parm.Add(ultraGrid2.Rows[i].Cells["memo"].Value.ToString()); parm.Add(ultraGrid2.Rows[i].Cells["SPEC_CODE"].Value.ToString()); //添加到parms当中。 parms.Add(parm); //循环嵌套,执行他子项的修改操作。 if (ultraGrid2.Rows[i].ChildBands[0].Rows.Count > 0) { ArrayList minParms = new ArrayList(); for (int j = 0; j < ultraGrid2.Rows[i].ChildBands[0].Rows.Count; j++) { Infragistics.Win.UltraWinGrid.UltraGridRow minrow = ultraGrid2.Rows[i].ChildBands[0].Rows[j]; if ((Boolean)minrow.Cells["spchk"].Value) { //表示子表子项已经选中 //实现子表子项的修改操作,批量操作。 //ORDER_SPEC_CODE,ORDER_SPEC_DESC,SPEC_CODE, //SPEC_NAME,CREATE_NAME,CREATE_TIME,UPDATE_NAME, //UPDATE_TIME,DELETE_NAME ,DELETE_TIME,VALIDFLAG,MEMO ArrayList minParm = new ArrayList(); minParm.Add(minrow.Cells["ORDER_SPEC_DESC"].Value.ToString()); //parm.Add(ultraGrid2.Rows[i].Cells["SPEC_CODE"].Value.ToString()); //parm.Add(ultraGrid2.Rows[i].Cells["SPEC_NAME"].Value.ToString()); //修改人应该为当前用户。ultraGrid1.ActiveRow.Cells["update_name"].Value.ToString() minParm.Add(this.UserInfo.GetUserName()); //修改时间应该为当前时间。ultraGrid1.ActiveRow.Cells["update_time"].Value.ToString() minParm.Add(DateTime.Now.ToString()); minParm.Add(minrow.Cells["memo"].Value.ToString()); minParm.Add(minrow.Cells["ORDER_SPEC_CODE"].Value.ToString()); //添加到parms当中。 minParms.Add(minParm); } } //操作数据库,实现从表的修改。 if (minParms.Count > 0) { CoreClientParam minccp = new CoreClientParam(); //服务端的包名+类名 minccp.ServerName = "com.steering.pss.qcm.CoreSpecOrderBasics"; //类里的方法名 minccp.MethodName = "doModify"; minccp.ServerParams = new object[] { minParms }; minccp = this.ExecuteNonQuery(minccp, CoreInvokeType.Internal); if (minccp.ReturnCode == -1) return; } } } } if (parms.Count <= 0) { MessageBox.Show("请先选择数据后再进行操作!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } CoreClientParam ccp = new CoreClientParam(); //服务端的包名+类名 ccp.ServerName = "com.steering.pss.qcm.CoreSpecBasicsNew"; //类里的方法名 ccp.MethodName = "doModify"; ccp.ServerParams = new object[] { parms }; ccp = this.ExecuteNonQuery(ccp, CoreInvokeType.Internal); if (ccp.ReturnCode == -1) return; MessageBox.Show("修改成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); doQuery(); } /// /// 查询方法,比较通用的查询方法 /// private void doQuery() { bool validFlag = chkValid.Checked; string titleName = txtTitleName.Text.Trim(); dataTable2.Clear(); dataTable1.Clear(); try { DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.CoreSpecBasicsNew.getLineList", new Object[] { validFlag, titleName }, this.ob); GridHelper.CopyDataToDatatable(ref dt, ref this.dataTable1, true); dataTable1.AcceptChanges(); //从表的记录也要查询出来。 DataTable mindt = ServerHelper.GetData("com.steering.pss.qcm.CoreSpecOrderBasics.getLineList", new Object[] { validFlag, titleName }, this.ob); GridHelper.CopyDataToDatatable(ref mindt, ref this.dataTable2, true); } catch { return; } dataTable2.AcceptChanges(); GridHelper.RefreshAndAutoSize(ultraGrid2); } /// /// 获取产品规格代码 /// /// /// private string AutoSpecCode() { DataTable dt = null; try { dt = ServerHelper.GetData("com.steering.pss.qcm.CoreSpecBasicsNew.getMaxSpecCode", new object[] { }, ob); } catch { return "C000001"; } if (dt == null || dt.Rows[0][0].ToString() == "") { return "C000001"; } int maxCode = 0; string maxCodeString = dt.Rows[0][0].ToString(); maxCode = Convert.ToInt32(maxCodeString.Substring(1)); maxCode += 1; return maxCodeString.Substring(0, 1) + maxCode.ToString().PadLeft(6, '0'); } /// /// 获取订货规格代码 /// /// /// private string AutoOrderCode(RowEventArgs e) { ArrayList list = new ArrayList(); list.Add(e.Row.Cells["SPEC_CODE"].Value.ToString()); DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.CoreSpecBasicsNew.getMaxOrderSpecCode", new object[] { list }, ob); string specCode = e.Row.Cells["SPEC_CODE"].Value.ToString(); if (dt == null || dt.Rows[0][0].ToString() == "") { return specCode + "DH000001"; } int maxCode = 0; string maxCodeString = dt.Rows[0][0].ToString(); maxCode = Convert.ToInt32(maxCodeString.Substring(9)); maxCode += 1; return maxCodeString.Substring(0, 9) + maxCode.ToString().PadLeft(6, '0'); } private void ultraGrid2_AfterRowInsert(object sender, RowEventArgs e) { if (ultraGrid2.ActiveRow.Band.Columns.Contains(ultraGrid2.DisplayLayout.Bands[0].Columns["ColA"])) { string strMaxLclSpec_Code = ""; strMaxSvrSpec_Code = AutoSpecCode(); DataRow[] drs = dataTable1.Select("1=1", "SPEC_CODE DESC"); if (drs.Length > 0) { strMaxLclSpec_Code = strMaxSvrSpec_Code.Substring(0, 1) + (Convert.ToInt32(drs[0][0].ToString().Substring(1)) + 1).ToString().PadLeft(6, '0'); } if (strMaxLclSpec_Code == "") { ultraGrid2.ActiveRow.Cells["SPEC_CODE"].Value = strMaxSvrSpec_Code; } else { if (Convert.ToInt32(strMaxSvrSpec_Code.Substring(1)) >= Convert.ToInt32(strMaxLclSpec_Code.Substring(3))) { ultraGrid2.ActiveRow.Cells["SPEC_CODE"].Value = strMaxSvrSpec_Code; } else { ultraGrid2.ActiveRow.Cells["SPEC_CODE"].Value = strMaxLclSpec_Code; } } } else { string strMaxLclOrder_Spec_Code = ""; strMaxSvrOrder_Spec_Code = AutoOrderCode(e); DataRow[] drs = null; string spec_Code = e.Row.Cells["SPEC_CODE"].Value.ToString(); drs = dataTable2.Select("SPEC_CODE = '" + spec_Code + "'", "ORDER_SPEC_CODE DESC"); if (drs.Length > 0) { strMaxLclOrder_Spec_Code = strMaxSvrOrder_Spec_Code.Substring(0, 9) + (Convert.ToInt32(drs[0][0].ToString().Substring(9)) + 1).ToString().PadLeft(6, '0'); } if (strMaxLclOrder_Spec_Code == "") { ultraGrid2.ActiveRow.Cells["ORDER_SPEC_CODE"].Value = strMaxSvrOrder_Spec_Code; } else { if (Convert.ToInt32(strMaxSvrOrder_Spec_Code.Substring(9)) >= Convert.ToInt32(strMaxLclOrder_Spec_Code.Substring(9))) { ultraGrid2.ActiveRow.Cells["ORDER_SPEC_CODE"].Value = strMaxSvrOrder_Spec_Code; } else { ultraGrid2.ActiveRow.Cells["ORDER_SPEC_CODE"].Value = strMaxLclOrder_Spec_Code; } } e.Row.Cells["SPEC_NAME"].Value = e.Row.ParentRow.Cells["SPEC_NAME"].Value; } ultraGrid2.UpdateData(); } private void ultraGrid2_CellChange(object sender, CellEventArgs e) { ultraGrid2.UpdateData(); if (e.Cell.Column.Header.Caption == "选择" && e.Cell.Band.Columns.Contains(ultraGrid2.DisplayLayout.Bands[0].Columns["ColA"])) { e.Cell.Row.Cells["CHK"].Value = e.Cell.Value; foreach (UltraGridRow row in e.Cell.Row.ChildBands[0].Rows) { row.Cells["spchk"].Value = e.Cell.Value; row.Cells["CHK"].Value = e.Cell.Value; } } else if (e.Cell.Column.Header.Caption == "选择" && e.Cell.Band.Columns.Contains(ultraGrid2.DisplayLayout.Bands[1].Columns["ColB"])) { e.Cell.Row.Cells["CHK"].Value = e.Cell.Value; } if (e.Cell.Row.Band.Columns.Contains(ultraGrid2.DisplayLayout.Bands[0].Columns["ColA"])) { if (e.Cell.Row.Cells["MSC_STYLE"].Value.ToString() == "A") { string spec_Name = ""; spec_Name += e.Cell.Row.Cells["DIMATER"].Value.ToString(); if (spec_Name == "" || e.Cell.Row.Cells["HEIGHT"].Value.ToString() == "") { spec_Name += e.Cell.Row.Cells["HEIGHT"].Value.ToString(); } else { spec_Name += "*" + e.Cell.Row.Cells["HEIGHT"].Value.ToString(); } e.Cell.Row.Cells["SPEC_NAME"].Value = spec_Name; } else if (e.Cell.Row.Cells["MSC_STYLE"].Value.ToString() == "B") { e.Cell.Row.Cells["SPEC_NAME"].Value = e.Cell.Row.Cells["DIMATER"].Value.ToString(); e.Cell.Row.Cells["HEIGHT"].Value = ""; } else { e.Cell.Row.Cells["DIMATER"].Value = ""; e.Cell.Row.Cells["HEIGHT"].Value = ""; } } SaveChooseCode(e); ultraGrid2.Update(); } private void ultraGrid2_InitializeRow(object sender, InitializeRowEventArgs e) { BandComboToGrid(e); if (_exporting) return; if (e.Row.Cells["VALIDFLAG"].Value.ToString() == "0") { e.Row.Appearance.ForeColor = Color.Red; } else { e.Row.Appearance.ForeColor = Color.Black; } ControlEdit(e); SetCellColor(e); } private void BandComboToGrid(InitializeRowEventArgs e) { if (e.Row.HasParent() == false) { e.Row.Cells["MSC_STYLE"].EditorComponent = cmbBindType; } } private void SetCellColor(InitializeRowEventArgs e) { foreach (UltraGridCell cell in e.Row.Cells) { if (cell.Activation == Activation.AllowEdit) { cell.Appearance.BackColor = Color.FromArgb(255, 255, 192); } else { cell.Appearance.BackColor = e.Row.Appearance.BackColor; cell.Appearance.BackColor = e.Row.Appearance.BackColor2; } } } private void SaveChooseCode(CellEventArgs e) { if (e.Cell.Row.Band.Columns.Contains(ultraGrid2.DisplayLayout.Bands[0].Columns["ColA"])) { if (e.Cell.Row.Cells["cb"].Value.ToString().ToUpper() == "TRUE") { if (_chooseCodes.Contains(e.Cell.Row.Cells["SPEC_CODE"].Value.ToString()) == false) { _chooseCodes.Add(e.Cell.Row.Cells["SPEC_CODE"].Value.ToString()); } } else { if (_chooseCodes.Contains(e.Cell.Row.Cells["SPEC_CODE"].Value.ToString()) == true) { _chooseCodes.Remove(e.Cell.Row.Cells["SPEC_CODE"].Value.ToString()); } } } else { if (e.Cell.Row.Cells["spchk"].Value.ToString().ToUpper() == "TRUE") { if (_chooseCodes.Contains(e.Cell.Row.Cells["SPEC_CODE"].Value.ToString()) == false) { _chooseCodes.Add(e.Cell.Row.Cells["SPEC_CODE"].Value.ToString()); } } else { if (e.Cell.Row.ParentRow.Cells["cb"].Value.ToString() == "True") return; UltraGridRow[] rows = GridHelper.GetRowsWithKey(e.Cell.Row.ParentRow.ChildBands[0], new string[] { "spchk" }, new string[] { "True" }); if (rows.Length > 0) return; if (_chooseCodes.Contains(e.Cell.Row.Cells["SPEC_CODE"].Value.ToString()) == true) { _chooseCodes.Remove(e.Cell.Row.Cells["SPEC_CODE"].Value.ToString()); } } } } private void ControlEdit(InitializeRowEventArgs e) { List list = new List(); list.Add("创建人"); list.Add("创建时间"); list.Add("修改人"); list.Add("修改时间"); list.Add("作废人"); list.Add("作废时间"); list.Add("有效状态"); list.Add("产品规格代码"); List list3 = new List(); list3.Add("外径"); list3.Add("壁厚"); List list2 = new List(); list2.Add("创建人"); list2.Add("创建时间"); list2.Add("修改人"); list2.Add("修改时间"); list2.Add("作废人"); list2.Add("作废时间"); list2.Add("有效标志"); list2.Add("订货规格代码"); foreach (UltraGridCell cell in e.Row.Cells) { if (cell.Band.Columns.Contains(ultraGrid2.DisplayLayout.Bands[0].Columns["ColA"])) { if (e.Row.Cells["cb"].Value.ToString().ToUpper() == "TRUE" && list.Contains(cell.Column.Header.Caption) == false) { if (cell.Column.Header.Caption == "产品规格描述") { if (e.Row.Cells["MSC_STYLE"].Value.ToString() == "C" || e.Row.Cells["MSC_STYLE"].Value.ToString() == "") { cell.Activation = Activation.AllowEdit; } else { cell.Activation = Activation.ActivateOnly; } } else if (cell.Column.Header.Caption == "类型") { cell.Style = Infragistics.Win.UltraWinGrid.ColumnStyle.DropDownList; cell.Activation = Activation.AllowEdit; } else { cell.Activation = Activation.AllowEdit; } } else if (cell.Column.Header.Caption != "选择" && list3.Contains(cell.Column.Header.Caption) == false) { if (cell.Column.Header.Caption == "类型") { cell.Style = Infragistics.Win.UltraWinGrid.ColumnStyle.DropDown; cell.Activation = Activation.ActivateOnly; } else { cell.Activation = Activation.ActivateOnly; } } } else { if (e.Row.Cells["spchk"].Value.ToString().ToUpper() == "TRUE" && list2.Contains(cell.Column.Header.Caption) == false) { cell.Activation = Activation.AllowEdit; } else if (cell.Column.Header.Caption != "选择") { cell.Activation = Activation.ActivateOnly; } } } if (e.Row.Band.Columns.Contains(ultraGrid2.DisplayLayout.Bands[0].Columns["ColA"])) { if (e.Row.Cells["cb"].Value.ToString().ToUpper() == "TRUE") { if (e.Row.Cells["MSC_STYLE"].Value.ToString() == "A") { e.Row.Cells["DIMATER"].Activation = Activation.AllowEdit; e.Row.Cells["HEIGHT"].Activation = Activation.AllowEdit; } else if (e.Row.Cells["MSC_STYLE"].Value.ToString() == "B") { e.Row.Cells["DIMATER"].Activation = Activation.AllowEdit; e.Row.Cells["HEIGHT"].Activation = Activation.ActivateOnly; } else { e.Row.Cells["DIMATER"].Activation = Activation.ActivateOnly; e.Row.Cells["HEIGHT"].Activation = Activation.ActivateOnly; } } else { if (e.Row.Cells["MSC_STYLE"].Value.ToString() == "A") { e.Row.Cells["DIMATER"].Activation = Activation.ActivateOnly; e.Row.Cells["HEIGHT"].Activation = Activation.ActivateOnly; } else if (e.Row.Cells["MSC_STYLE"].Value.ToString() == "B") { e.Row.Cells["DIMATER"].Activation = Activation.ActivateOnly; e.Row.Cells["HEIGHT"].Activation = Activation.ActivateOnly; } else { e.Row.Cells["DIMATER"].Activation = Activation.ActivateOnly; e.Row.Cells["HEIGHT"].Activation = Activation.ActivateOnly; } } } //ultraGrid2.Update(); } } }