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 FrmStandard : FrmBase { private string strMaxSvrStd_Code = ""; //数据库最大标准代码 private string strMaxSvrPsc_Code = ""; //数据库最大产品规范代码 private List listPsc = new List();//子行产品规范编码集合。 private List _chooseStd_Code = new List(); //保存前选择的标准编码 private bool _exporting = false; private Dictionary _ultCmbDic_Unit = null; public FrmStandard() { InitializeComponent(); } private void FrmStandard_Load(object sender, EventArgs e) { //bandCmbStd(); bandCmbMaxStdXh(); GetProducName(); GetSteel(); GetStd_Style(); GetNewPro(); GetDepartment(); GetStdType(); GetAutoJudge(); CreateGrid2Combo(); } private void CreateGrid2Combo() { int cout = cmbDepartment.Items.Count; _ultCmbDic_Unit = new Dictionary(cout + 1); _ultCmbDic_Unit.Add("NoValue", new UltraComboEditor()); for (int i = 0; i < cmbDepartment.Items.Count; i++) { string pid = cmbDepartment.Items[i].DataValue.ToString(); DataTable dt = ServerHelper.GetData("com.steering.comm.data.ComBaseInfo.getSection", new object[] { }, this.ob); dt.DefaultView.RowFilter = "PID = '" + pid + "'"; UltraComboEditor cmb = new UltraComboEditor(); cmb.DataSource = dt; cmb.DisplayMember = "DEPARTNAME"; cmb.ValueMember = "DEPARTID"; cmb.Visible = false; _ultCmbDic_Unit.Add(pid, cmb); this.Controls.Add(cmb); } } private void GetProducName() { DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.CoreStandard.getProducName", new object[] { }, this.ob); cmbProduct.DataSource = dt; cmbProduct.DisplayMember = "PRODUCNAME"; cmbProduct.ValueMember = "PRODUCCODE"; } private void GetSteel() { DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.CoreStandard.getSteel", new object[] { }, this.ob); cmbSteel.DataSource = dt; cmbSteel.DisplayMember = "STEELNAME"; cmbSteel.ValueMember = "STEELCODE"; } private void GetStd_Style() { DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.CoreStandard.getStd_Style", new object[] { }, this.ob); cmbStdStyle.DataSource = dt; cmbStdStyle.DisplayMember = "STD_STYLE_DESC"; cmbStdStyle.ValueMember = "Std_Style"; } private void GetNewPro() { DataTable dt = new DataTable(); DataColumn dc = new DataColumn("NAME"); DataColumn dc2 = new DataColumn("CODE"); dt.Columns.Add(dc); dt.Columns.Add(dc2); DataRow dr = dt.NewRow(); dr["NAME"] = "是"; dr["CODE"] = "1"; dt.Rows.Add(dr); DataRow dr2 = dt.NewRow(); dr2["NAME"] = "否"; dr2["CODE"] = "0"; dt.Rows.Add(dr2); cmbNewPro.DataSource = dt; cmbNewPro.DisplayMember = "NAME"; cmbNewPro.ValueMember = "CODE"; } private void GetDepartment() { DataTable dt = ServerHelper.GetData("com.steering.comm.data.ComBaseInfo.getDepartment", new object[] { }, this.ob); cmbDepartment.DataSource = dt; cmbDepartment.DisplayMember = "DEPARTNAME"; cmbDepartment.ValueMember = "DEPARTID"; } private void GetStdType() { ClsBaseInfo.FillStdType(cmbStdType, this.ob, false); } private void GetAutoJudge() { DataTable dt = new DataTable(); DataColumn[] dcs = new DataColumn[] { new DataColumn("NAME"), new DataColumn("CODE") }; dt.Columns.AddRange(dcs); dt.Rows.Add(new object[] { "是", "1" }); dt.Rows.Add(new object[] { "否", "0" }); cmbAutoJudge.DataSource = dt; cmbAutoJudge.DisplayMember = "NAME"; cmbAutoJudge.ValueMember = "CODE"; } /// /// 重写基类方法 /// /// /// public override void ToolBar_Click(object sender, string ToolbarKey) { switch (ToolbarKey) { case "doQuery": doQuery(); break; case "doSave": doSave(); 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; //ConvertExportData(); GridHelper.ulGridToExcel(ultraGrid2, "产品规范"); _exporting = false; } //private void ConvertExportData() //{ // dataTable4.Clear(); // dataTable3.Clear(); // GridHelper.CopyDataToDatatable(ref dataTable1, ref dataTable3, true); // GridHelper.CopyDataToDatatable(ref dataTable2, ref dataTable4, true); // for (int i = 0; i < ultraGrid1.Rows.Count; i++) // { // DataRow[] drs = ((DataTable)cmbStdType.DataSource).Select("CODE = '"+ ultraGrid1.Rows[i].Cells["STDSTYLE"].Value.ToString() +"'"); // if(drs.Length > 0) // { // ultraGrid1.Rows[i].Cells["STDSTYLE"].Value = drs[0]["NAME"].ToString(); // } // drs = ((DataTable)cmbMaxStdXh.DataSource).Select("BASECODE = '"+ ultraGrid1.Rows[i].Cells["STD_STYLE"].Value.ToString() +"'"); // if (drs.Length > 0) // { // ultraGrid1.Rows[i].Cells["STD_STYLE"].Value = drs[0]["BASENAME"].ToString(); // } // string pid = ultraGrid1.Rows[i].Cells["DEPARTMENT_CODE"].Value.ToString(); // if (_ultCmbDic_Unit.ContainsKey(pid)) // { // drs = ((DataTable)_ultCmbDic_Unit[pid].DataSource).Select("DEPARTID = '" + ultraGrid1.Rows[i].Cells["UNIT_CODE"].Value.ToString() + "'"); // if (drs.Length > 0) // { // ultraGrid1.Rows[i].Cells["UNIT_CODE"].Value = drs[0]["DEPARTNAME"].ToString(); // } // } // drs = ((DataTable)cmbDepartment.DataSource).Select("DEPARTID = '"+ ultraGrid1.Rows[i].Cells["DEPARTMENT_CODE"].Value.ToString() +"'"); // if (drs.Length > 0) // { // ultraGrid1.Rows[i].Cells["DEPARTMENT_CODE"].Value = drs[0]["DEPARTNAME"].ToString(); // } // for (int j = 0; j < ultraGrid1.Rows[i].ChildBands[0].Rows.Count; j++) // { // UltraGridRow childRow1 = ultraGrid1.Rows[i].ChildBands[0].Rows[j]; // DataRow[] drsSub = ((DataTable)cmbProduct.DataSource).Select("PRODUCCODE = '"+ childRow1.Cells["PRODUCCODE"].Value.ToString() +"'"); // if (drsSub.Length > 0) // { // childRow1.Cells["PRODUCCODE"].Value = drsSub[0]["PRODUCNAME"].ToString(); // } // drsSub = ((DataTable)cmbSteel.DataSource).Select("STEELCODE = '"+ childRow1.Cells["STEELCODE"].Value.ToString() +"'"); // if (drsSub.Length > 0) // { // childRow1.Cells["STEELCODE"].Value = drsSub[0]["STEELNAME"].ToString(); // } // drsSub = ((DataTable)cmbStdStyle.DataSource).Select("Std_Style = '"+ childRow1.Cells["STD_STYLE"].Value.ToString() +"'"); // if (drsSub.Length > 0) // { // childRow1.Cells["STD_STYLE"].Value = drsSub[0]["STD_STYLE_DESC"].ToString(); // } // drsSub = ((DataTable)cmbNewPro.DataSource).Select("CODE = '"+ childRow1.Cells["NEW_PROC_CODE"].Value.ToString() +"'"); // if (drsSub.Length > 0) // { // childRow1.Cells["NEW_PROC_CODE"].Value = drsSub[0]["NAME"].ToString(); // } // string pidSub = childRow1.Cells["DEPARTMENT_CODE"].Value.ToString(); // if (_ultCmbDic_Unit.ContainsKey(pidSub)) // { // drsSub = ((DataTable)_ultCmbDic_Unit[pidSub].DataSource).Select("DEPARTID = '" + childRow1.Cells["UNIT_CODE"].Value.ToString() + "'"); // if (drsSub.Length > 0) // { // childRow1.Cells["UNIT_CODE"].Value = drsSub[0]["DEPARTNAME"].ToString(); // } // } // drsSub = ((DataTable)cmbDepartment.DataSource).Select("DEPARTID = '"+ childRow1.Cells["DEPARTMENT_CODE"].Value.ToString() +"'"); // if (drsSub.Length > 0) // { // childRow1.Cells["DEPARTMENT_CODE"].Value = drsSub[0]["DEPARTNAME"].ToString(); // } // drsSub = ((DataTable)cmbAutoJudge.DataSource).Select("CODE = '"+ childRow1.Cells["AUTOJUDGE"].Value.ToString() +"'"); // if (drsSub.Length > 0) // { // childRow1.Cells["AUTOJUDGE"].Value = drsSub[0]["NAME"].ToString(); // } // } // } // if (ultraGrid2.DisplayLayout.Bands[0].SortedColumns.Count > 0) // { // for (int i = 0; i < ultraGrid1.DisplayLayout.Bands[0].Columns.Count; i++) // { // string strSorted = ultraGrid2.DisplayLayout.Bands[0].SortedColumns[0].Header.Caption; // if (ultraGrid1.DisplayLayout.Bands[0].Columns[i].Header.Caption == strSorted) // { // SortIndicator sort = ultraGrid2.DisplayLayout.Bands[0].SortedColumns[0].SortIndicator; // ultraGrid1.DisplayLayout.Bands[0].Columns[i].SortIndicator = sort; // } // else // { // ultraGrid1.DisplayLayout.Bands[0].Columns[i].SortIndicator = SortIndicator.None; // } // } // } // if (ultraGrid2.DisplayLayout.Bands[1].SortedColumns.Count > 0) // { // for (int i = 0; i < ultraGrid1.DisplayLayout.Bands[1].Columns.Count; i++) // { // string strSorted = ultraGrid2.DisplayLayout.Bands[1].SortedColumns[0].Header.Caption; // if (ultraGrid1.DisplayLayout.Bands[1].Columns[i].Header.Caption == strSorted) // { // SortIndicator sort = ultraGrid2.DisplayLayout.Bands[1].SortedColumns[0].SortIndicator; // ultraGrid1.DisplayLayout.Bands[1].Columns[i].SortIndicator = sort; // } // else // { // ultraGrid1.DisplayLayout.Bands[1].Columns[i].SortIndicator = SortIndicator.None; // } // } // } // for (int i = 0; i < ultraGrid2.Rows.Count; i++) // { // if (ultraGrid2.Rows[i].IsFilteredOut) // { // DataRow[] drs2 = dataTable4.Select("STD_CODE = '"+ ultraGrid2.Rows[i].Cells["STD_CODE"].Value.ToString() +"'"); // foreach (DataRow dr in drs2) // { // dataTable4.Rows.Remove(dr); // } // DataRow[] drs = dataTable3.Select("STD_CODE = '"+ ultraGrid2.Rows[i].Cells["STD_CODE"].Value.ToString() +"'"); // foreach (DataRow dr in drs) // { // dataTable3.Rows.Remove(dr); // } // } // } //} private void ExpandRow() { foreach (UltraGridRow row in ultraGrid2.Rows) { if (_chooseStd_Code.Contains(row.Cells["STD_CODE"].Value.ToString())) { row.ExpandAll(); row.Activate(); } } } /// /// 绑定标准号CODE和描述,从表使用。 /// private void bandCmbStd() { //子类的数据绑定项? DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.CoreStandard.bandCmbStd", new Object[] { }, this.ob); if (dt != null && dt.Rows.Count > 0) { //STD_CODE,STD_NAME dt.Columns["STD_CODE"].Caption = "标准号代码"; dt.Columns["STD_NAME"].Caption = "标准号描述"; cmbStdName.DataSource = dt; cmbStdName.DisplayMember = "STD_NAME"; cmbStdName.ValueMember = "STD_CODE"; } } /// /// 绑定主表标准协会代码 /// private void bandCmbMaxStdXh() { //select BASECODE,BASENAME from COM_BASE_INFO where SORTCODE=4001 DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.CoreStandard.bandCmbMaxStdXh", new Object[] { }, this.ob); if (dt != null && dt.Rows.Count > 0) { dt.Columns["BASECODE"].Caption = "标准协会代码"; dt.Columns["BASENAME"].Caption = "标准协会描述"; cmbMaxStdXh.DataSource = dt; cmbMaxStdXh.DisplayMember = "BASENAME"; cmbMaxStdXh.ValueMember = "BASECODE"; } } /// /// 查询 /// private void doQuery() { bool validFlag = chkValid.Checked; string titleName = txtTitleName.Text.Trim(); dataTable2.Clear(); dataTable1.Clear(); try { //CoreStandard标准基础表 DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.CoreStandard.getLineList", new Object[] { validFlag, titleName }, this.ob); GridHelper.CopyDataToDatatable(ref dt, ref this.dataTable1, true); dataTable1.AcceptChanges(); //CorePsc产品规范定义表 DataTable mindt = ServerHelper.GetData("com.steering.pss.qcm.CoreStandard.getLineListPsc", new Object[] { validFlag }, this.ob); GridHelper.CopyDataToDatatable(ref mindt, ref this.dataTable2, true); dataTable2.AcceptChanges(); } catch { return; } SaveListPsc(); //保存子行的编码,用于保存判断。 } private void SaveListPsc() { listPsc.Clear(); foreach (DataRow dr in dataTable2.Rows) { listPsc.Add(dr["PSC"].ToString()); } } private bool CheckData() { ultraGrid2.UpdateData(); UltraGridRow[] rows1 = GridHelper.GetRowsWithKey(ultraGrid2, new string[] { "STD_CHK" }, new string[] { "True" }); //DataRow[] drs1 = dataTable1.Select("STD_CHK = True"); //DataRow[] drs2 = dataTable2.Select("PSC_CHK = True"); List insertStdNames = new List(); List insertPscNames = new List(); foreach (UltraGridRow row in rows1) { if (row.Cells["STD_NAME"].Value.ToString() == "") { MessageBox.Show("标准名称不能为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return false; } else if (IsExistStd(row.Cells["STD_NAME"].Value.ToString(), row.Cells["STD_CODE"].Value.ToString()) == true) { MessageBox.Show("已存在标准名称-[" + row.Cells["STD_NAME"].Value.ToString() + "]!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return false; } if (row.Cells["STDSTYLE"].Value.ToString() == "") { MessageBox.Show("标准类型不能为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return false; } if (row.Cells["VALIDFLAG"].Value.ToString() == "0") { MessageBox.Show("已经作废的数据不能再修改,请恢复后修改!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return false; } if (insertStdNames.Contains(row.Cells["STD_NAME"].Value.ToString())) { MessageBox.Show("出现重复的标准名称-[" + row.Cells["STD_NAME"].Value.ToString() + "]!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return false; } insertStdNames.Add(row.Cells["STD_NAME"].Value.ToString()); } foreach (UltraGridRow childRow in ultraGrid2.Rows) { UltraGridRow[] rows2 = GridHelper.GetRowsWithKey(childRow.ChildBands[0], new string[] { "PSC_CHK" }, new string[] { "True" }); foreach (UltraGridRow row in rows2) { if (row.Cells["PSC_DESC"].Value.ToString() == "") { MessageBox.Show("产品规范描述不能为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return false; } else if (IsExistPsc(row.Cells["PSC_DESC"].Value.ToString(), row.Cells["PSC"].Value.ToString()) == true) { MessageBox.Show("系统已存在产品规范描述-[" + row.Cells["PSC_DESC"].Value.ToString() + "]!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return false; } if (row.Cells["STEELCODE"].Value.ToString() == "") { MessageBox.Show("钢级(牌号)不能为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return false; } if (insertPscNames.Contains(row.Cells["PSC_DESC"].Value.ToString())) { MessageBox.Show("保存的数据中,出现重复的产品规范描述-[" + row.Cells["PSC_DESC"].Value.ToString() + "]!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return false; } insertPscNames.Add(row.Cells["PSC_DESC"].Value.ToString()); } } return true; } private bool IsExistStd(string stdName, string strCode) { ArrayList list = new ArrayList(); list.Add(stdName); list.Add(strCode); DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.CoreStandard.isExistStd", new object[] { list }, this.ob); if (dt == null) { return false; } else if (dt != null && dt.Rows[0][0].ToString() != "0") { return true; } return false; } private bool IsExistPsc(string pscName, string pscCode) { ArrayList list = new ArrayList(); list.Add(pscName); list.Add(pscCode); DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.CoreStandard.isExistPsc", new object[] { list }, ob); if (dt == null) { return false; } else if (dt != null && dt.Rows[0][0].ToString() != "0") { return true; } return false; } /// /// 保存 /// private void doSave() { //更新数据源。 ultraGrid2.UpdateData(); if (CheckData() == false) { return; } //判断是否有勾选项,没有则提示。 int chkbool = 0; foreach (UltraGridRow row in ultraGrid2.Rows) { if (row.Cells["STD_CHK"].Value.ToString() == "True") { chkbool++; } foreach (UltraGridRow row2 in row.ChildBands[0].Rows) { if (row2.Cells["PSC_CHK"].Value.ToString() == "True") { chkbool++; } } } 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++) { Infragistics.Win.UltraWinGrid.UltraGridRow row = ultraGrid2.Rows[i]; DataRow dr = dataTable1.Rows[i]; if (dr["CHK"].ToString() == "True") { //判定勾选项是新增行,还是修改行。 if (dr.RowState == DataRowState.Added) { ArrayList parm = new ArrayList(); //标准代码 parm.Add(dr["STD_CODE"].ToString()); //标准名称 parm.Add(dr["STD_NAME"].ToString()); //新增数据可以按照以下方式取值,但是修改就不行,应该ultraGrid.Rows[i]与DataTable.Rows[i],所对应的行是不一致的。 //只有新增是一致的。因此,修改是取不到Text值的,他本身就是冗余字段。 //标准类型(G:国标,K:客户,N:内控),数据库中存G、K、N,K表示销售客户,将来要与销售客户表对接。 parm.Add(ultraGrid2.Rows[i].Cells["STDSTYLE"].Value.ToString()); parm.Add(ultraGrid2.Rows[i].Cells["STD_NOTE"].Text); parm.Add(ultraGrid2.Rows[i].Cells["STD_STYLE"].Value.ToString()); //标准描述 parm.Add(ultraGrid2.Rows[i].Cells["STD_STYLE"].Text); //标准协会代码,从基础信息表中获取,4001为质量,400101为美标。 parm.Add(ultraGrid2.Rows[i].Cells["STD_VERSION"].Value.ToString()); //标准协会描述(美标、英标、国标、行业标准、企标.......) parm.Add(ultraGrid2.Rows[i].Cells["DEPARTMENT_CODE"].Value.ToString()); parm.Add(ultraGrid2.Rows[i].Cells["DEPARTMENT_CODE"].Text); parm.Add(ultraGrid2.Rows[i].Cells["UNIT_CODE"].Value.ToString()); parm.Add(ultraGrid2.Rows[i].Cells["UNIT_CODE"].Text); parm.Add(this.UserInfo.GetUserName()); parm.Add(dr["MEMO"].ToString()); spbAddParams.Add(parm); } else if (this.dataTable1.Rows[i].RowState == DataRowState.Modified) { ArrayList parm = new ArrayList(); //标准名称 parm.Add(dr["STD_NAME"].ToString()); //标准类型(G:国标,K:客户,N:内控),数据库中存G、K、N,K表示销售客户,将来要与销售客户表对接。 parm.Add(row.Cells["STDSTYLE"].Value.ToString()); //标准描述 parm.Add(dr["STD_NOTE"].ToString()); //标准协会代码,从基础信息表中获取,4001为质量,400101为美标。 parm.Add(row.Cells["STD_STYLE"].Value.ToString()); //标准协会描述(美标、英标、国标、行业标准、企标.......) parm.Add(row.Cells["STD_STYLE"].Text); parm.Add(dr["STD_VERSION"].ToString()); //标准版本号是自增行,为空即可。 //parm.Add(dr["STD_VERSION"].ToString()); //以下数据预留,暂时缺少表。 parm.Add(row.Cells["DEPARTMENT_CODE"].Value.ToString()); parm.Add(row.Cells["DEPARTMENT_CODE"].Text); parm.Add(row.Cells["UNIT_CODE"].Value.ToString()); parm.Add(row.Cells["UNIT_CODE"].Text); parm.Add(this.UserInfo.GetUserName()); parm.Add(dr["MEMO"].ToString()); //标准代码 parm.Add(dr["STD_CODE"].ToString()); spbUpdateParams.Add(parm); } } foreach (UltraGridRow row2 in row.ChildBands[0].Rows) { if (row2.Cells["CHK"].Value.ToString() == "True") { if (listPsc.Contains(row2.Cells["PSC"].Value.ToString()) == false) { ArrayList minParm = new ArrayList(); //产品规范码,自动生成的。 minParm.Add(row2.Cells["PSC"].Value.ToString()); //产品规范描述 minParm.Add(row2.Cells["PSC_DESC"].Value.ToString()); minParm.Add(row2.Cells["PRODUCCODE"].Value.ToString()); minParm.Add(row2.Cells["PRODUCCODE"].Text); ////标准代码cmbStd,需要绑定数据源。 minParm.Add(row2.Cells["STD_CODE"].Text); //标准名称 minParm.Add(row2.Cells["STD_NAME"].Value.ToString()); minParm.Add(row2.Cells["STEELCODE"].Value.ToString()); minParm.Add(row2.Cells["STEELCODE"].Text); minParm.Add(row2.Cells["STD_STYLE"].Value.ToString()); minParm.Add(row2.Cells["STD_STYLE"].Text); minParm.Add(row2.Cells["NEW_PROC_CODE"].Value.ToString()); minParm.Add(row2.Cells["NEW_PROC_DESC"].Value.ToString()); minParm.Add(row2.Cells["DEPARTMENT_CODE"].Value.ToString()); minParm.Add(row2.Cells["DEPARTMENT_CODE"].Text); minParm.Add(row2.Cells["UNIT_CODE"].Value.ToString()); minParm.Add(row2.Cells["AUTOJUDGE"].Value.ToString()); minParm.Add(row2.Cells["UNIT_CODE"].Text); minParm.Add(this.UserInfo.GetUserName()); minParm.Add(row2.Cells["MEMO"].Value.ToString()); spbSupplementAddParams.Add(minParm); //19 } else { ArrayList minParm = new ArrayList(); //产品规范描述 minParm.Add(row2.Cells["PSC_DESC"].Value.ToString()); ////标准代码cmbStd,需要绑定数据源。 minParm.Add(row2.Cells["PRODUCCODE"].Value.ToString()); //标准名称 minParm.Add(row2.Cells["PRODUCCODE"].Text); minParm.Add(row2.Cells["STD_CODE"].Text); minParm.Add(row2.Cells["STD_NAME"].Value.ToString()); minParm.Add(row2.Cells["STEELCODE"].Value.ToString()); minParm.Add(row2.Cells["STEELCODE"].Text); minParm.Add(row2.Cells["STD_STYLE"].Value.ToString()); minParm.Add(row2.Cells["STD_STYLE"].Text); minParm.Add(row2.Cells["NEW_PROC_CODE"].Value.ToString()); minParm.Add(row2.Cells["NEW_PROC_DESC"].Value.ToString()); minParm.Add(row2.Cells["DEPARTMENT_CODE"].Value.ToString()); minParm.Add(row2.Cells["DEPARTMENT_CODE"].Text); minParm.Add(row2.Cells["UNIT_CODE"].Value.ToString()); minParm.Add(row2.Cells["AUTOJUDGE"].Value.ToString()); minParm.Add(row2.Cells["UNIT_CODE"].Text); minParm.Add(this.UserInfo.GetUserName()); minParm.Add(row2.Cells["MEMO"].Text); minParm.Add(row2.Cells["PSC"].Text); spbSupplementUpdateParams.Add(minParm); } } } //直接遍历从表所有行,判定是否有选中项。 for (int j = 0; j < dataTable2.Rows.Count; j++) { DataRow minrow = dataTable2.Rows[j]; } } //执行数据库相关操作 CoreClientParam ccp = new CoreClientParam(); //服务端的包名+类名 ccp.ServerName = "com.steering.pss.qcm.CoreStandard"; //类里的方法名 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(); _chooseStd_Code.Clear(); } } /// /// 删除或恢复 /// /// 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["STD_CHK"].Value)) { param.Add(row.Cells["STD_CODE"].Value.ToString()); chkCount++; foreach (Infragistics.Win.UltraWinGrid.UltraGridRow minrow in row.ChildBands[0].Rows) { minParam.Add(minrow.Cells["PSC"].Value.ToString()); chkCount++; } } else { //主表未勾选,从表勾选了,照样删除。PSC,PSC_DESC foreach (Infragistics.Win.UltraWinGrid.UltraGridRow minrow in row.ChildBands[0].Rows) { if ((Boolean)minrow.Cells["PSC_CHK"].Value) { minParam.Add(minrow.Cells["PSC"].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.CoreStandard.deleteLineInfo", new Object[] { param, UserInfo.GetUserName(), isDelete }, this.ob); } int minCount = 0; if (minParam.Count > 0) { minCount = ServerHelper.SetData("com.steering.pss.qcm.CoreStandard.deleteLineInfoPsc", new Object[] { minParam, UserInfo.GetUserName(), isDelete }, this.ob); } if (count > 0 || minCount > 0) { doQuery(); ExpandRow(); _chooseStd_Code.Clear(); } } catch { } } } /// /// 获取标准代码 /// /// /// private string AutoStdCode() { DataTable dt = null; try { dt = ServerHelper.GetData("com.steering.pss.qcm.CoreStandard.queryMaxStdCode", null, ob); } catch { return "STD001"; } if (dt == null || dt.Rows[0][0].ToString() == "") { return "STD001"; } int maxCode = 0; string maxCodeString = dt.Rows[0]["STD_CODE"].ToString(); maxCode = Convert.ToInt32(maxCodeString.Substring(3)); maxCode += 1; return maxCodeString.Substring(0, 3) + maxCode.ToString().PadLeft(3, '0'); } /// /// 获取产品规范代码 /// /// /// private string AutoPscCode() { DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.CoreStandard.queryMaxPscCode", new object[] { }, ob); if (dt == null || dt.Rows[0][0].ToString() == "") { return "PSC0001"; } int maxCode = 0; string maxCodeString = dt.Rows[0]["PSC"].ToString(); maxCode = Convert.ToInt32(maxCodeString.Substring(3)); maxCode += 1; return maxCodeString.Substring(0, 3) + maxCode.ToString().PadLeft(4, '0'); } /// /// 新增时,CODE自增1 /// /// /// private void ultraGrid2_AfterRowInsert(object sender, RowEventArgs e) { if (ultraGrid2.ActiveRow.Band.Columns.Contains(ultraGrid2.DisplayLayout.Bands[0].Columns["ColA"])) { string strMaxLclStd_Code = ""; strMaxSvrStd_Code = AutoStdCode(); DataRow[] drs = dataTable1.Select("1=1", "STD_CODE DESC"); if (drs.Length > 0) { strMaxLclStd_Code = strMaxSvrStd_Code.Substring(0, 3) + (Convert.ToInt32(drs[0][0].ToString().Substring(3)) + 1).ToString().PadLeft(3, '0'); } if (strMaxLclStd_Code == "") { ultraGrid2.ActiveRow.Cells["STD_CODE"].Value = strMaxSvrStd_Code; } else { if (Convert.ToInt32(strMaxSvrStd_Code.Substring(3)) >= Convert.ToInt32(strMaxLclStd_Code.Substring(3))) { ultraGrid2.ActiveRow.Cells["STD_CODE"].Value = strMaxSvrStd_Code; } else { ultraGrid2.ActiveRow.Cells["STD_CODE"].Value = strMaxLclStd_Code; } } } else { string strMaxLclPsc_Code = ""; strMaxSvrPsc_Code = AutoPscCode(); DataRow[] drs = dataTable2.Select("1=1", "PSC DESC"); if (drs.Length > 0) { strMaxLclPsc_Code = strMaxSvrPsc_Code.Substring(0, 3) + (Convert.ToInt32(drs[0][0].ToString().Substring(3)) + 1).ToString().PadLeft(4, '0'); } if (strMaxLclPsc_Code == "") { ultraGrid2.ActiveRow.Cells["PSC"].Value = strMaxSvrPsc_Code; } else { if (Convert.ToInt32(strMaxSvrPsc_Code.Substring(3)) >= Convert.ToInt32(strMaxLclPsc_Code.Substring(3))) { ultraGrid2.ActiveRow.Cells["PSC"].Value = strMaxSvrPsc_Code; } else { ultraGrid2.ActiveRow.Cells["PSC"].Value = strMaxLclPsc_Code; } } e.Row.Cells["STD_NAME"].Value = e.Row.ParentRow.Cells["STD_NAME"].Value; } ultraGrid2.UpdateData(); } private void ultraGrid2_InitializeRow(object sender, InitializeRowEventArgs e) { BandComboToGrid2(e); if (_exporting) return; //ultraGrid2.UpdateData(); if (e.Row.Cells["VALIDFLAG"].Value.ToString().Equals("0")) { e.Row.Appearance.ForeColor = Color.Red; } else { e.Row.Appearance.ForeColor = Color.Black; } ControlEdit(e); if (e.Row.Band.Columns.Contains(ultraGrid2.DisplayLayout.Bands[1].Columns["ColB"])) { string psc_Desc = ""; psc_Desc += e.Row.Cells["PRODUCCODE"].Text.ToString(); if (e.Row.Cells["STD_NAME"].Value.ToString() == "" || psc_Desc == "") { psc_Desc += e.Row.Cells["STD_NAME"].Text; } else { psc_Desc += "+" + e.Row.Cells["STD_NAME"].Text; } if (e.Row.Cells["STEELCODE"].Value.ToString() == "" || psc_Desc == "") { psc_Desc += e.Row.Cells["STEELCODE"].Text; } else { psc_Desc += "+" + e.Row.Cells["STEELCODE"].Text; } if (e.Row.Cells["STD_STYLE"].Value.ToString() == "" || psc_Desc == "") { psc_Desc += e.Row.Cells["STD_STYLE"].Text; } else { psc_Desc += "+" + e.Row.Cells["STD_STYLE"].Text; } e.Row.Cells["PSC_DESC"].Value = psc_Desc; } SetCellColor(e); } private void BandComboToGrid2(InitializeRowEventArgs e) { string pid = e.Row.Cells["DEPARTMENT_CODE"].Value.ToString(); if (_ultCmbDic_Unit.ContainsKey(pid)) { e.Row.Cells["UNIT_CODE"].EditorComponent = _ultCmbDic_Unit[pid]; } else { e.Row.Cells["UNIT_CODE"].EditorComponent = _ultCmbDic_Unit["NoValue"]; } e.Row.Cells["DEPARTMENT_CODE"].EditorComponent = cmbDepartment; if (e.Row.HasParent() == false) { e.Row.Cells["STDSTYLE"].EditorComponent = cmbStdType; e.Row.Cells["STD_STYLE"].EditorComponent = cmbMaxStdXh; } else { e.Row.Cells["STD_STYLE"].EditorComponent = cmbStdStyle; e.Row.Cells["PRODUCCODE"].EditorComponent = cmbProduct; e.Row.Cells["STEELCODE"].EditorComponent = cmbSteel; e.Row.Cells["NEW_PROC_CODE"].EditorComponent = cmbNewPro; e.Row.Cells["AUTOJUDGE"].EditorComponent = cmbAutoJudge; } } 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.BackColor2 = 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["STD_CHK"].Value.ToString().ToUpper() == "TRUE") { if (_chooseStd_Code.Contains(e.Cell.Row.Cells["STD_CODE"].Value.ToString()) == false) { _chooseStd_Code.Add(e.Cell.Row.Cells["STD_CODE"].Value.ToString()); } } else { if (_chooseStd_Code.Contains(e.Cell.Row.Cells["STD_CODE"].Value.ToString()) == true) { _chooseStd_Code.Remove(e.Cell.Row.Cells["STD_CODE"].Value.ToString()); } } } else { if (e.Cell.Row.Cells["PSC_CHK"].Value.ToString().ToUpper() == "TRUE") { if (_chooseStd_Code.Contains(e.Cell.Row.Cells["STD_CODE"].Value.ToString()) == false) { _chooseStd_Code.Add(e.Cell.Row.Cells["STD_CODE"].Value.ToString()); } } else { if (e.Cell.Row.ParentRow.Cells["STD_CHK"].Value.ToString() == "True") return; UltraGridRow[] rows = GridHelper.GetRowsWithKey(e.Cell.Row.ParentRow.ChildBands[0], new string[] { "PSC_CHK" }, new string[] { "True" }); if (rows.Length > 0) return; if (_chooseStd_Code.Contains(e.Cell.Row.Cells["STD_CODE"].Value.ToString()) == true) { _chooseStd_Code.Remove(e.Cell.Row.Cells["STD_CODE"].Value.ToString()); } } } } private void ultraGrid2_CellChange(object sender, CellEventArgs e) { ultraGrid2.Update(); 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["PSC_CHK"].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.Column.Header.Caption == "管理部门" && e.Cell.Band.Columns.Contains(ultraGrid2.DisplayLayout.Bands[0].Columns["ColA"])) { e.Cell.Row.Cells["UNIT_CODE"].Value = ""; } else if (e.Cell.Column.Header.Caption == "管理部门" && e.Cell.Band.Columns.Contains(ultraGrid2.DisplayLayout.Bands[1].Columns["ColB"])) { e.Cell.Row.Cells["UNIT_CODE"].Value = ""; } SaveChooseCode(e); ultraGrid2.UpdateData(); } 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.Add("有效标识"); List list2 = new List(); list2.Add("创建人"); list2.Add("创建时间"); list2.Add("修改人"); list2.Add("修改时间"); list2.Add("作废人"); list2.Add("作废时间"); list2.Add("标准代码"); list2.Add("有效标识"); list2.Add("产品规范描述"); list2.Add("产品规范码"); list2.Add("标准名称"); List listDropDown = new List(); listDropDown.Add("标准类型"); listDropDown.Add("管理部门"); listDropDown.Add("管理科室"); listDropDown.Add("标准协会"); listDropDown.Add("品名"); listDropDown.Add("钢级(牌号)"); listDropDown.Add("标准类别"); listDropDown.Add("是否新产品"); listDropDown.Add("是否自动判定"); foreach (UltraGridCell cell in e.Row.Cells) { if (cell.Band.Columns.Contains(ultraGrid2.DisplayLayout.Bands[0].Columns["ColA"])) { if (e.Row.Cells["STD_CHK"].Value.ToString().ToUpper() == "TRUE" && list.Contains(cell.Column.Header.Caption) == false) { if (e.Row.HasChild() && cell.Column.Header.Caption == "标准名称") { cell.Activation = Activation.ActivateOnly; } else { if (listDropDown.Contains(cell.Column.Header.Caption)) { cell.Style = Infragistics.Win.UltraWinGrid.ColumnStyle.DropDownList; } cell.Activation = Activation.AllowEdit; } } else if (cell.Column.Header.Caption != "选择") { if (listDropDown.Contains(cell.Column.Header.Caption)) { cell.Style = Infragistics.Win.UltraWinGrid.ColumnStyle.DropDown; } cell.Activation = Activation.ActivateOnly; } } else { if (e.Row.Cells["PSC_CHK"].Value.ToString().ToUpper() == "TRUE" && list2.Contains(cell.Column.Header.Caption) == false) { if (listDropDown.Contains(cell.Column.Header.Caption)) { cell.Style = Infragistics.Win.UltraWinGrid.ColumnStyle.DropDownList; } cell.Activation = Activation.AllowEdit; } else if (cell.Column.Header.Caption != "选择") { if (listDropDown.Contains(cell.Column.Header.Caption)) { cell.Style = Infragistics.Win.UltraWinGrid.ColumnStyle.DropDown; } cell.Activation = Activation.ActivateOnly; } } } //ultraGrid2.Update(); } private void ultraGrid2_InitializeLayout(object sender, InitializeLayoutEventArgs e) { } } }