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.Linq; using System.Windows.Forms; namespace Core.StlMes.Client.Qcm { public partial class PopupProductGrade : FrmBase { FrmProductGrade _frmGrade; private string _msc = ""; private string _mscPline = ""; private List _listChecked = new List(); //private OpeBase _ob; public PopupProductGrade(string msc, string mscPline, OpeBase ob) { InitializeComponent(); ExceptionHelper.RegistException(); this.ob = ob; _msc = msc; _mscPline = mscPline; _frmGrade = new FrmProductGrade(); _frmGrade.ob = ob; _frmGrade.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; _frmGrade.TopLevel = false; _frmGrade.Show(); _frmGrade.Dock = DockStyle.Fill; //_frmGrade.PopupLoad("", ob); this.panel1.Controls.Add(_frmGrade); } private void PopupProductGrade_Load(object sender, EventArgs e) { try { this.Cursor = Cursors.WaitCursor; GridHelper.SetExcludeColumnsActive(_frmGrade.UltraGrid2.DisplayLayout.Bands[0], "cb"); Query(); } finally { this.Cursor = Cursors.Default; } } private void RefreshMscGrade() { ArrayList list = new ArrayList(); list.Add(_msc); list.Add(_mscPline); DataTable dt = null; try { dt = ServerHelper.GetData("com.steering.pss.qcm.CoreInnerMSCRGRD2.queryMscGrade", new object[] { list }, this.ob); } catch { return; } //DateTime dtS = DateTime.Now; //foreach (DataRow dr in dt.Rows) //{ // UltraGridRow[] rows = GridHelper.GetRowsWithKey(_frmGrade.UltraGrid2, // new string[] { "GRADECODE" }, new string[] { dr["GRADECODE"].ToString() }); // if (rows.Length > 0) // { // rows[0].Cells["cb"].Value = true; // } //} //DateTime dtS2 = DateTime.Now; //double d = (dtS2 - dtS).TotalMilliseconds; DateTime dtS = DateTime.Now; IQueryable queryableRows = _frmGrade.UltraGrid2.Rows.AsQueryable().Where(a => 1 < 0); foreach (DataRow dr in dt.Rows) { queryableRows = queryableRows.Concat(_frmGrade.UltraGrid2.Rows.AsQueryable(). Where("GRADECODE = '" + dr["GRADECODE"].ToString() + "'")); } //queryableRows.ToList().ForEach(a=> a.Cells["cb"].Value = true); _listChecked.Clear(); foreach (UltraGridRow row in queryableRows.ToList()) { row.Cells["cb"].Value = true; _listChecked.Add(row.GetValue("GRADECODE")); } DateTime dtS2 = DateTime.Now; double d = (dtS2 - dtS).TotalMilliseconds; _frmGrade.UltraGrid2.UpdateData(); } private void Query() { _frmGrade.ToolBar_Click(null, "doQuery"); RefreshMscGrade(); } private void ultraToolbarsManager1_ToolClick(object sender, Infragistics.Win.UltraWinToolbars.ToolClickEventArgs e) { switch (e.Tool.Key) { case "查询": Query(); break; case "保存": _frmGrade.ToolBar_Click(null, "doSave"); RefreshMscGrade(); break; case "作废": _frmGrade.ToolBar_Click(null, "doDelete"); break; case "作废查询": _frmGrade.ToolBar_Click(null, "QueryKey"); RefreshMscGrade(); break; case "恢复": _frmGrade.ToolBar_Click(null, "doResume"); break; } } private void btnSubmit_Click(object sender, EventArgs e) { _frmGrade.UltraGrid2.UpdateData(); UltraGridRow[] rows = _frmGrade.UltraGrid2.Rows.AsQueryable().Where( a => a.GetValue("cb") == "True" || _listChecked.Contains(a.GetValue("GRADECODE"))).ToArray(); ArrayList queryMscGradeList = new ArrayList(); queryMscGradeList.Add(_msc); queryMscGradeList.Add(_mscPline); DataTable dt = null; dt = ServerHelper.GetData("com.steering.pss.qcm.CoreInnerMSCRGRD2.queryMscGrade", new object[] { queryMscGradeList }, this.ob); ArrayList list = new ArrayList(); foreach (UltraGridRow row in _frmGrade.UltraGrid2.Rows) { CellsCollection cells = row.Cells; bool chk = bool.Parse(row.Cells["cb"].Value.ToString()); DataRow[] drs = dt.Select("GRADECODE = '" + cells["GRADECODE"].Value.ToString() + "'"); if (drs.Length > 0 && !chk) { DataTable dtIsUsedGrade = ServerHelper.GetData("com.steering.pss.qcm.CoreInnerMSCRGRD2.isUsedGrade", new object[] { _msc, _mscPline, cells["GRADECODE"].Value.ToString() }, ob); if (dtIsUsedGrade.Rows.Count > 0) { MessageUtil.ShowWarning("钢种[" + cells["GRADENAME"].Value.ToString() + "]已被该制程下的内控标准使用,不能取消!"); cells["cb"].Value = true; row.Update(); return; } } ArrayList listSub = new ArrayList(); listSub.Add(chk ? "" : "DELETE"); listSub.Add(_msc); listSub.Add(_mscPline); listSub.Add(" "); listSub.Add(cells["GRADECODE"].Value.ToString()); listSub.Add(cells["GRADENAME"].Value.ToString()); listSub.Add(cells["ASSORTMENT_CODE"].Value.ToString()); listSub.Add(cells["ASSORTMENT_NAME"].Value.ToString()); listSub.Add(" "); listSub.Add(" "); listSub.Add(CoreFS.SA06.CoreUserInfo.UserInfo.GetUserName()); listSub.Add(""); list.Add(listSub); } try { ServerHelper.SetData("com.steering.pss.qcm.CoreInnerMSCRGRD2.insertMscGrade", new object[] { list }, this.ob); } catch { return; } MessageUtil.ShowTips("操作成功!"); this.DialogResult = DialogResult.OK; } private void btnCancel_Click(object sender, EventArgs e) { this.Close(); } } }