using System; using System.Collections; using System.Data; using System.Drawing; using System.Reflection; using System.Windows.Forms; using Core.StlMes.Client.LgClassModel; using CoreFS.CA06; using Infragistics.Win; using Infragistics.Win.UltraWinGrid; namespace Core.StlMes.Client.LgCommon { public partial class ucChemelEment : UserControl { private DataTable _dtCraftElement = null; // 工艺化学成分信息表 private CraftElement _tmpObjCraftEle; // 存放工艺化学成分信息的类 private CraftElement _objCraftEleBuffer; // 用于实时刷新工艺化学成分信息的缓冲区 private DataTable _dtEleStd = null; // 标准元素值表 private string[] Columns = new string[] { "TYPESYMBOL", "C", "Si", "Mn", "P", "S", "Ni", "Cr", "Cu", "V", "Mo", "Nb", "Ceq", "Als", "Asn", "Sn", "Ca" }; public ucChemelEment() { InitializeComponent(); GenerateTableFrame(); //初始化 } /// /// 生成铁水成分的表架构 /// private void GenerateTableFrame() { try { _dtCraftElement = new DataTable("CraftElement"); DataColumn col; for (int i = 0; i < Columns.Length; i++) { try { col = new DataColumn(Columns[i], typeof(string)); if (Columns[i] == "TYPESYMBOL") col.Caption = "项目名"; else if (Columns[i] == "Asn") col.Caption = "As"; _dtCraftElement.Columns.Add(col); } catch { } } ulgridElement.DataSource = _dtCraftElement; SetReadOnly(); ClsControlPack.SetUltraGridAppearance(this); ulgridElement.DisplayLayout.Override.ActiveRowAppearance.FontData.ResetBold(); ulgridElement.DisplayLayout.Override.RowSelectors = DefaultableBoolean.False; } catch { } } private void ucChemelEment_Load(object sender, EventArgs e) { _tmpObjCraftEle = new CraftElement(); _objCraftEleBuffer = new CraftElement(); } private void SetReadOnly() { try { for (int i = 0; i < ulgridElement.DisplayLayout.Bands[0].Columns.Count; i++) { ulgridElement.DisplayLayout.Bands[0].Columns[i].CellActivation = Activation.NoEdit; } } catch { } } /// /// 获取总貌图混铁炉样 /// /// 混铁炉号 public void GetMapEleInfo(string strWsid, OpeBase ob) { try { if (string.IsNullOrEmpty(strWsid.Trim())) return; string strErr = ""; ArrayList arry = new ArrayList(); arry.Add(strWsid == "1" ? "A01" : "A00"); arry.Add(strWsid == "1" ? "A01" : "A00"); CommonClientToServer ccTos = new CommonClientToServer(); ccTos.ob = ob; DataSet ds = ccTos.ExecuteQueryFunctionsSqlID("Core.Mes.Server.Common.ComDataAccess", "QueryWithParameter", "STL_MAP0005", 5, arry, out strErr); DataSetToCraftElement(ref ds, ref _tmpObjCraftEle); } catch { } } /// /// 获取化学成分样 /// /// 熔炼号 /// 岗位例:C01 1#转炉 /// 样类型(1铁水、2钢水、3渣样) public void GetCraftEleInfo(string HeatNo, string _DEVICE_POS, string CheckNo, OpeBase ob) { try { if (string.IsNullOrEmpty(HeatNo.Trim()) || HeatNo.Trim().Length <= 1) return; // HeatNo = HeatNo.Trim().Substring(1); bool bSuccess = false; String station = "A00"; //A00代表二体系铁水,A01代表一体系铁水 try { String code = HeatNo.Trim().Substring(2, 1); if (code == "1" || code == "2") { station = "A01"; } } catch { } string strMsg = ""; string strSql = ""; strSql += Convert.ToString(" select t.checkno,'TS' assaytypecode,t.c, t.si, t.mn, t.p, t.s,").Trim() + " "; strSql += Convert.ToString(" '" + HeatNo + "' heatno ").Trim() + " "; strSql += Convert.ToString(" from stl_chemelement t").Trim() + " "; strSql += Convert.ToString(" where t.heatno =").Trim() + " "; strSql += Convert.ToString("(select max(m.heatno) heatno").Trim() + " "; strSql += Convert.ToString("from (select heatno").Trim() + " "; strSql += Convert.ToString("from STL_CHEMELEMENT").Trim() + " "; strSql += Convert.ToString("where stationcode = '" + station + "'").Trim() + " "; strSql += Convert.ToString("union").Trim() + " "; strSql += Convert.ToString(" select heatno").Trim() + " "; strSql += Convert.ToString(" from j#STL_CHEMELEMENT").Trim() + " "; strSql += Convert.ToString(" where stationcode = '" + station + "') m)").Trim() + " "; DataSet ds1 = ClsDataAccessPack.GetData(strSql, out bSuccess, out strMsg, ob); strMsg = ""; bSuccess = false; string SqlID = "ReceiveCraftElement.Select"; ArrayList Args = new ArrayList(); Args.Add(HeatNo); Args.Add(_DEVICE_POS.Substring(0, 1)); Args.Add(_DEVICE_POS.Substring(0, 1)); Args.Add(CheckNo); DataSet ds = ClsDataAccessPack.GetData(SqlID, Args, out bSuccess, out strMsg, ob); if (ds1 != null && ds1.Tables[0].Rows.Count > 0) { DataRow dr = ds.Tables[0].NewRow(); DataRow Dr = ds1.Tables[0].Rows[0]; dr["CHECKNO"] = Dr["CHECKNO"].ToString(); dr["HEATNO"] = Dr["HEATNO"].ToString(); dr["ASSAYTYPECODE"] = Dr["ASSAYTYPECODE"].ToString(); dr["C"] = Dr["C"].ToString(); dr["SI"] = Dr["SI"].ToString(); dr["MN"] = Dr["MN"].ToString(); dr["P"] = Dr["P"].ToString(); dr["S"] = Dr["S"].ToString(); dr["ASSAYDATE"] = DBNull.Value; ds.Tables[0].Rows.Add(dr); } if (bSuccess) DataSetToCraftElement(ref ds, ref _tmpObjCraftEle); } catch { } } public void GetHmpEleInfo_RES(string HeatNo, string _DEVICE_POS, string CheckNo, OpeBase ob) { try { if (string.IsNullOrEmpty(HeatNo.Trim()) || HeatNo.Trim().Length <= 1) return; // HeatNo = HeatNo.Trim().Substring(1); bool bSuccess = false; string strMsg = ""; string strSql = ""; strSql += Convert.ToString("SELECT *").Trim() + " "; strSql += Convert.ToString(" FROM (SELECT *").Trim() + " "; strSql += Convert.ToString(" FROM STL_CHEMELEMENT").Trim() + " "; strSql += Convert.ToString(" WHERE HEATNO = '" + HeatNo + "'").Trim() + " "; strSql += Convert.ToString(" AND STATIONCODE = '" + _DEVICE_POS + "'").Trim() + " "; strSql += Convert.ToString(" OR (CASE").Trim() + " "; strSql += Convert.ToString(" WHEN UPPER('" + _DEVICE_POS.Substring(0, 1) + "') = 'C' THEN").Trim() + " "; strSql += Convert.ToString(" CHECKNO").Trim() + " "; strSql += Convert.ToString(" ELSE").Trim() + " "; strSql += Convert.ToString(" '1'").Trim() + " "; strSql += Convert.ToString(" END = CASE").Trim() + " "; strSql += Convert.ToString(" WHEN UPPER('" + _DEVICE_POS.Substring(0, 1) + "') = 'C' THEN").Trim() + " "; strSql += Convert.ToString(" '" + CheckNo + "'").Trim() + " "; strSql += Convert.ToString(" ELSE").Trim() + " "; strSql += Convert.ToString(" '2'").Trim() + " "; strSql += Convert.ToString(" END)").Trim() + " "; strSql += Convert.ToString(" UNION ALL").Trim() + " "; strSql += Convert.ToString(" SELECT *").Trim() + " "; strSql += Convert.ToString(" FROM J#STL_CHEMELEMENT").Trim() + " "; strSql += Convert.ToString(" WHERE HEATNO = '" + HeatNo + "'").Trim() + " "; strSql += Convert.ToString(" AND STATIONCODE = '" + _DEVICE_POS + "'").Trim() + " "; strSql += Convert.ToString(" OR (CASE").Trim() + " "; strSql += Convert.ToString(" WHEN UPPER('" + _DEVICE_POS.Substring(0, 1) + "') = 'C' THEN").Trim() + " "; strSql += Convert.ToString(" CHECKNO").Trim() + " "; strSql += Convert.ToString(" ELSE").Trim() + " "; strSql += Convert.ToString(" '1'").Trim() + " "; strSql += Convert.ToString(" END = CASE").Trim() + " "; strSql += Convert.ToString(" WHEN UPPER('" + _DEVICE_POS.Substring(0, 1) + "') = 'C' THEN").Trim() + " "; strSql += Convert.ToString(" '" + CheckNo + "'").Trim() + " "; strSql += Convert.ToString(" ELSE").Trim() + " "; strSql += Convert.ToString(" '2'").Trim() + " "; strSql += Convert.ToString(" END))").Trim() + " "; strSql += Convert.ToString(" ORDER BY DECODE(ASSAYTYPECODE,").Trim() + " "; strSql += Convert.ToString(" 'GT',").Trim() + " "; strSql += Convert.ToString(" '1',").Trim() + " "; strSql += Convert.ToString(" 'TS',").Trim() + " "; strSql += Convert.ToString(" '2',").Trim() + " "; strSql += Convert.ToString(" 'LD',").Trim() + " "; strSql += Convert.ToString(" '3',").Trim() + " "; strSql += Convert.ToString(" 'AR',").Trim() + " "; strSql += Convert.ToString(" '4',").Trim() + " "; strSql += Convert.ToString(" 'LF',").Trim() + " "; strSql += Convert.ToString(" '5',").Trim() + " "; strSql += Convert.ToString(" 'CC',").Trim() + " "; strSql += Convert.ToString(" '6',").Trim() + " "; strSql += Convert.ToString(" '7'),").Trim() + " "; strSql += Convert.ToString(" CHECKNO").Trim(); DataSet ds = ClsDataAccessPack.GetData(strSql, out bSuccess, out strMsg, ob); if (bSuccess) DataSetToCraftElement(ref ds, ref _tmpObjCraftEle); } catch { } } //查询化学检验值表 public void GetCraftEleInfo_RES(string HeatNo, string _DEVICE_POS, string CheckNo, OpeBase ob) { try { if (string.IsNullOrEmpty(HeatNo.Trim()) || HeatNo.Trim().Length <= 1) return; // HeatNo = HeatNo.Trim().Substring(1); bool bSuccess = false; string strMsg = ""; string strSql = ""; strSql += Convert.ToString("SELECT *").Trim() + " "; strSql += Convert.ToString(" FROM (SELECT *").Trim() + " "; strSql += Convert.ToString(" FROM STL_CHEMELEMENT").Trim() + " "; strSql += Convert.ToString(" WHERE STOVE_NO = '" + HeatNo + "'").Trim() + " "; strSql += Convert.ToString(" OR (CASE").Trim() + " "; strSql += Convert.ToString(" WHEN UPPER('" + _DEVICE_POS.Substring(0, 1) + "') = 'C' THEN").Trim() + " "; strSql += Convert.ToString(" CHECKNO").Trim() + " "; strSql += Convert.ToString(" ELSE").Trim() + " "; strSql += Convert.ToString(" '1'").Trim() + " "; strSql += Convert.ToString(" END = CASE").Trim() + " "; strSql += Convert.ToString(" WHEN UPPER('" + _DEVICE_POS.Substring(0, 1) + "') = 'C' THEN").Trim() + " "; strSql += Convert.ToString(" '" + CheckNo + "'").Trim() + " "; strSql += Convert.ToString(" ELSE").Trim() + " "; strSql += Convert.ToString(" '2'").Trim() + " "; strSql += Convert.ToString(" END)").Trim() + " "; strSql += Convert.ToString(" UNION ALL").Trim() + " "; strSql += Convert.ToString(" SELECT *").Trim() + " "; strSql += Convert.ToString(" FROM J#STL_CHEMELEMENT").Trim() + " "; strSql += Convert.ToString(" WHERE STOVE_NO = '" + HeatNo + "'").Trim() + " "; strSql += Convert.ToString(" OR (CASE").Trim() + " "; strSql += Convert.ToString(" WHEN UPPER('" + _DEVICE_POS.Substring(0, 1) + "') = 'C' THEN").Trim() + " "; strSql += Convert.ToString(" CHECKNO").Trim() + " "; strSql += Convert.ToString(" ELSE").Trim() + " "; strSql += Convert.ToString(" '1'").Trim() + " "; strSql += Convert.ToString(" END = CASE").Trim() + " "; strSql += Convert.ToString(" WHEN UPPER('" + _DEVICE_POS.Substring(0, 1) + "') = 'C' THEN").Trim() + " "; strSql += Convert.ToString(" '" + CheckNo + "'").Trim() + " "; strSql += Convert.ToString(" ELSE").Trim() + " "; strSql += Convert.ToString(" '2'").Trim() + " "; strSql += Convert.ToString(" END))").Trim() + " "; strSql += Convert.ToString(" ORDER BY DECODE(ASSAYTYPECODE,").Trim() + " "; strSql += Convert.ToString(" 'GT',").Trim() + " "; strSql += Convert.ToString(" '1',").Trim() + " "; strSql += Convert.ToString(" 'TS',").Trim() + " "; strSql += Convert.ToString(" '2',").Trim() + " "; strSql += Convert.ToString(" 'LD',").Trim() + " "; strSql += Convert.ToString(" '3',").Trim() + " "; strSql += Convert.ToString(" 'AR',").Trim() + " "; strSql += Convert.ToString(" '4',").Trim() + " "; strSql += Convert.ToString(" 'LF',").Trim() + " "; strSql += Convert.ToString(" '5',").Trim() + " "; strSql += Convert.ToString(" 'CC',").Trim() + " "; strSql += Convert.ToString(" '6',").Trim() + " "; strSql += Convert.ToString(" '7'),").Trim() + " "; strSql += Convert.ToString(" CHECKNO").Trim(); DataSet ds = ClsDataAccessPack.GetData(strSql, out bSuccess, out strMsg, ob); if (bSuccess) DataSetToCraftElement(ref ds, ref _tmpObjCraftEle); } catch { } } /// /// 填充化学成分信息界面数据 /// public void FillCraftElement() { int iCurr = 0; if (ulgridElement.ActiveRow != null) iCurr = ulgridElement.ActiveRow.Index; ulgridElement.BeginUpdate(); try { lock (this) { int iRows = _objCraftEleBuffer.hList.Count + 3; //加3行标准 try { _dtCraftElement.Rows.Clear(); DataRow row = null; for (int i = 0; i < iRows; i++) { row = _dtCraftElement.NewRow(); _dtCraftElement.Rows.Add(row); } _dtCraftElement.Rows[iRows - 2]["TYPESYMBOL"] = "国标"; _dtCraftElement.Rows[0]["TYPESYMBOL"] = "内控"; _dtCraftElement.Rows[iRows - 1]["TYPESYMBOL"] = "客户"; //_dtCraftElement.Rows[0]["TYPESYMBOL"] = "国标"; //_dtCraftElement.Rows[1]["TYPESYMBOL"] = "内控"; //_dtCraftElement.Rows[2]["TYPESYMBOL"] = "客户"; } catch { } #region " C标准" if (_dtEleStd != null && this._dtEleStd.Rows.Count > 0) { for (int i = 0; i < this._dtEleStd.Rows.Count; i++) { DataRow dr = this._dtEleStd.Rows[i]; ClsBusinessPack.SetStandardElemData(Convert.ToInt32(dr["STD_DC"].ToString()) - 2, dr, ref _dtCraftElement); } } #endregion int idx = 1; #region " 实时值" for (int i = 0; i < _objCraftEleBuffer.hList.Count; i++, idx++) { JOB_CHEMELEMENT obj = (JOB_CHEMELEMENT)_objCraftEleBuffer.hList[i]; ClsBusinessPack.SetCraftElemGridData(idx, obj, GetItemName(obj.ASSAYTYPECODE), ref _dtCraftElement); } #endregion ulgridElement.DataBind(); ulgridElement.Rows[0].Fixed = true; ulgridElement.Rows[1].Fixed = true; ulgridElement.DisplayLayout.Bands[0].Override.FixedRowStyle = Infragistics.Win.UltraWinGrid.FixedRowStyle.Top; ulgridElement.DisplayLayout.UseFixedHeaders = true; ulgridElement.DisplayLayout.Bands[0].Columns["TYPESYMBOL"].Header.Fixed = true; ulgridElement.DisplayLayout.Bands[0].Override.FixedHeaderIndicator = Infragistics.Win.UltraWinGrid.FixedHeaderIndicator.None; proc_CompareChemEle(); } } catch { } finally { ClsControlPack.RefreshAndAutoSize(ulgridElement); if (iCurr > 0 && ulgridElement.Rows.Count >= iCurr + 1) { ulgridElement.Rows[iCurr].Activated = true; ulgridElement.Rows[iCurr].Selected = false; } ulgridElement.EndUpdate(); } } /// /// 铁水预处理填充化学成分信息界面数据 /// public void HmpFillCraftElement() { int iCurr = 0; if (ulgridElement.ActiveRow != null) iCurr = ulgridElement.ActiveRow.Index; ulgridElement.BeginUpdate(); try { lock (this) { int iRows = _objCraftEleBuffer.hList.Count + 3; //加2行标准 try { _dtCraftElement.Rows.Clear(); DataRow row = null; for (int i = 0; i < iRows; i++) { row = _dtCraftElement.NewRow(); _dtCraftElement.Rows.Add(row); } _dtCraftElement.Rows[0]["TYPESYMBOL"] = "国标"; _dtCraftElement.Rows[1]["TYPESYMBOL"] = "内控"; _dtCraftElement.Rows[2]["TYPESYMBOL"] = "客户"; } catch { } #region " C标准" if (_dtEleStd != null && this._dtEleStd.Rows.Count > 0) { for (int i = 0; i < this._dtEleStd.Rows.Count; i++) { DataRow dr = this._dtEleStd.Rows[i]; ClsBusinessPack.SetStandardElemData(Convert.ToInt32(dr["STD_DC"].ToString()) - 1, dr, ref _dtCraftElement); } } #endregion int idx = 3; #region " 实时值" for (int i = 0; i < _objCraftEleBuffer.hList.Count; i++, idx++) { JOB_CHEMELEMENT obj = (JOB_CHEMELEMENT)_objCraftEleBuffer.hList[i]; ClsBusinessPack.SetCraftElemGridData(idx, obj, GetItemName(obj.ASSAYTYPECODE), ref _dtCraftElement); } #endregion ulgridElement.DataBind(); ulgridElement.Rows[0].Fixed = true; ulgridElement.Rows[1].Fixed = true; ulgridElement.DisplayLayout.Bands[0].Override.FixedRowStyle = Infragistics.Win.UltraWinGrid.FixedRowStyle.Top; ulgridElement.DisplayLayout.UseFixedHeaders = true; ulgridElement.DisplayLayout.Bands[0].Columns["TYPESYMBOL"].Header.Fixed = true; ulgridElement.DisplayLayout.Bands[0].Override.FixedHeaderIndicator = Infragistics.Win.UltraWinGrid.FixedHeaderIndicator.None; proc_CompareChemEle(); ulgridElement.Rows[0].Hidden = true; ulgridElement.Rows[1].Hidden = true; ulgridElement.Rows[2].Hidden = true; } } catch { } finally { ClsControlPack.RefreshAndAutoSize(ulgridElement); if (iCurr > 0 && ulgridElement.Rows.Count >= iCurr + 1) { ulgridElement.Rows[iCurr].Activated = true; ulgridElement.Rows[iCurr].Selected = false; } ulgridElement.EndUpdate(); } } private string GetItemName(string strCode) { switch (strCode.Trim().ToUpper().Substring(0,1)) { case "GT": return "高炉铁水"; case "T": return "铁水样"; case "B": return "脱硫铁水"; case "C": return "炉前样"; case "D": return "吹氩样"; case "P": return "平台样"; case "E": return "精炼样"; case "G": return "成品样"; case "ZP": return "铸坯样"; } return ""; } private void proc_CompareChemEle() //add on 2009-04-20 { try { string strElementType = "", strStdFX = "", strStdNK = "", strReal = ""; int iRetFX, iRetNK; Color clrOutFX = Color.Red, clrOutNK = Color.Blue, clrNormal = Color.Black; for (int i = 1; i < ulgridElement.Rows.Count; i++) { string assaytypecode = ulgridElement.Rows[i].Cells["TYPESYMBOL"].Value.ToString(); if (assaytypecode == "成品样") { strElementType = Convert.ToString(ulgridElement.Rows[i].Cells["TYPESYMBOL"].Value); if (strElementType.Contains("GT") || strElementType.Contains("TS") || strElementType == "") { for (int j = 1; j < ulgridElement.DisplayLayout.Bands[0].Columns.Count; j++) { ulgridElement.Rows[i].Cells[j].Appearance.ForeColor = clrNormal; } continue; } for (int j = 1; j < ulgridElement.DisplayLayout.Bands[0].Columns.Count; j++) { strStdNK = Convert.ToString(ulgridElement.Rows[ulgridElement.Rows.Count - 2].Cells[j].Value); strStdFX = Convert.ToString(ulgridElement.Rows[0].Cells[j].Value); strReal = Convert.ToString(ulgridElement.Rows[i].Cells[j].Value); iRetNK = sValue(strStdNK, strReal); iRetFX = sValue(strStdFX, strReal); if (iRetFX == -1) ulgridElement.Rows[i].Cells[j].Appearance.ForeColor = clrOutFX; else if (iRetNK == -1) ulgridElement.Rows[i].Cells[j].Appearance.ForeColor = clrOutNK; else ulgridElement.Rows[i].Cells[j].Appearance.ForeColor = clrNormal; } } } } catch (Exception ex) { string meg = ex.Message; } } private int sValue(string Svalue, string SCHvalue) //add on 2009-04-20 { if (SCHvalue.Length < 1) { return 0; } if (Svalue.Length > 0) { string BValue = "-1"; string EValue = "-1"; if (Svalue.IndexOf("~") > 0) { BValue = Svalue.Substring(0, Svalue.IndexOf("~")); EValue = Svalue.Substring(Svalue.IndexOf("~") + 1, Svalue.Length - Svalue.IndexOf("~") - 1); if (double.Parse(SCHvalue) >= double.Parse(BValue) && double.Parse(SCHvalue) <= double.Parse(EValue)) { return 0; //正确 } else { return -1; } } else { if (Svalue.IndexOf("≤") > -1) { EValue = Svalue.Substring(Svalue.IndexOf("≤") + 2, Svalue.Length - Svalue.IndexOf("≤") - 2); if (double.Parse(SCHvalue) <= double.Parse(EValue)) { return 0; //正确 } else { return -1; } } else { if (Svalue.IndexOf("<") > -1 && Svalue.IndexOf("=") == -1) { EValue = Svalue.Substring(Svalue.IndexOf("<") + 1, Svalue.Length - Svalue.IndexOf("<") - 1); if (double.Parse(SCHvalue) < double.Parse(EValue)) { return 0; //正确 } else { return -1; } } else { if (Svalue.IndexOf("≥") > -1) { EValue = Svalue.Substring(Svalue.IndexOf("≥") + 1, Svalue.Length - Svalue.IndexOf("≥") - 1); if (double.Parse(SCHvalue) >= double.Parse(EValue)) { return 0; //正确 } else { return -1; } } else { if (Svalue.IndexOf(">") > -1 && Svalue.IndexOf("=") == -1) { EValue = Svalue.Substring(Svalue.IndexOf(">") + 1, Svalue.Length - Svalue.IndexOf(">") - 1); if (double.Parse(SCHvalue) > double.Parse(EValue)) { return 0; //正确 } else { return -1; } } else { EValue = Svalue; try { if (double.Parse(SCHvalue) == double.Parse(EValue)) { return 0; //正确 } } catch { } return -1; } } } } } } return 0; } /// /// 获取标准元素值 /// /// 钢种(暂不用) /// 虚拟炉号 public void GetStandardElement(string strHeatID, OpeBase ob) { try { if (string.IsNullOrEmpty(strHeatID)) return; DataSet ds = ClsDataAccessPack.GetChemElementStandard(strHeatID, ob); if (ds != null && ds.Tables.Count > 0) _dtEleStd = ds.Tables[0]; } catch { } } /// /// 序列化化学成分 /// /// 作业化学成分 /// public void DataSetToCraftElement(ref DataSet ds, ref CraftElement obj) { try { obj.ClearElement(); PropertyInfo[] PropertyInfos = null; foreach (DataRow dr in ds.Tables[0].Rows) { JOB_CHEMELEMENT detail = new JOB_CHEMELEMENT(); if (PropertyInfos == null) { PropertyInfos = detail.GetType().GetProperties(); } //给各个属性赋值 foreach (PropertyInfo oPropertyInfo in PropertyInfos) { try { if (dr.Table.Columns.Contains(oPropertyInfo.Name)) { if (dr[oPropertyInfo.Name] != System.DBNull.Value) { oPropertyInfo.SetValue(detail, dr[oPropertyInfo.Name.ToString()], null); } } } catch (Exception ex) { MessageBox.Show(ex.Message); } } obj.Add(ref detail); }//end foreach _objCraftEleBuffer.DataHarmonize(ref obj); } catch { } } public void ResetData() { try { _tmpObjCraftEle.ClearElement(); _objCraftEleBuffer.ClearElement(); _dtCraftElement.Rows.Clear(); } catch { } } } }