using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Linq; using System.Text; using System.Windows.Forms; using Core.Mes.Client.Comm.Control; using Core.Mes.Client.Comm.Server; using Core.StlMes.Client.PlnSaleOrd.BaseMethod; using CoreFS.CA06; using Infragistics.Win; using Infragistics.Win.UltraWinGrid; namespace Core.StlMes.Client.PlnSaleOrd.炼钢计划.control { public partial class ucChemicalComposition : UserControl { public ucChemicalComposition() { InitializeComponent(); CurrentChem = null; } public DataRow CurrentChem { get; private set; } public void RefreshCurrentChemical(OpeBase Ob,string CraftNo,string StoveNo) { if(Ob==null) return; DataTable InternalStandard = ServerHelper.GetData("com.steering.pss.plnsaleord.steelMarkingPlan.StlChemical.GetStlChemicalStd", new object[] { CraftNo }, Ob); dtChem.Rows.Clear(); foreach (var colums in ulgridElement.DisplayLayout.Bands[0].Columns) { colums.Hidden = true; } ulgridElement.DisplayLayout.Bands[0].Columns["SAMPLE_NO"].Hidden = false; if (InternalStandard != null) { foreach (DataRow dataRow in InternalStandard.Rows) { string chemsKey = dataRow["CHEM_NAME"].ToString().Replace(" ", "").Replace("/", ""); if (!dtChem.Columns.Contains(chemsKey.ToUpper()) && !string.IsNullOrEmpty(chemsKey)) { DataColumn newDc = new DataColumn { ColumnName = chemsKey.ToUpper(), Caption = chemsKey }; dtChem.Columns.Add(newDc); } ulgridElement.DisplayLayout.Bands[0].Columns[chemsKey.ToUpper()].Hidden = false; } } DataRow drMax = dtChem.NewRow(); DataRow drMin = dtChem.NewRow(); drMax["SAMPLE_NO"] = "上限"; drMin["SAMPLE_NO"] = "下限"; if (InternalStandard != null) { foreach (DataRow dataRow in InternalStandard.Rows) { string columnsName = dataRow["CHEM_NAME"].ToString().ToUpper().Replace(" ", "").Replace("/", ""); drMax[columnsName] = dataRow["STDMAX_SIGN"] + dataRow["STDMAX"].ToString(); drMin[columnsName] = dataRow["STDMIN_SIGN"] + dataRow["STDMIN"].ToString(); ulgridElement.DisplayLayout.Bands[0].Columns[columnsName].Tag = dataRow["CHEM_FORMULA"]; } } dtChem.Rows.Add(drMax); dtChem.Rows.Add(drMin); DataTable dtData = ServerHelper.GetData("com.steering.pss.plnsaleord.steelMarkingPlan.StlChemical.GetStlChemicalData", new object[] { StoveNo }, Ob); if (dtData != null && dtData.Rows.Count>0) { CurrentChem = dtData.Rows[0]; foreach (DataRow dataRow in dtData.Rows) { foreach (DataColumn dc in dtData.Columns) { string columnsName = dc.ColumnName; if (columnsName.Equals("SAMPLE_NO")) continue; if (!dtChem.Columns.Contains(columnsName.ToUpper().Replace("ASN", "AS")) && dataRow[columnsName] != null && !string.IsNullOrEmpty((dataRow[columnsName].ToString()))) { DataColumn newDc = new DataColumn(); newDc.ColumnName = columnsName.ToUpper(); newDc.Caption = columnsName; dtChem.Columns.Add(newDc); } } DataRow tempRow = dtChem.NewRow(); tempRow["SAMPLE_NO"] = dataRow["SAMPLE_NO"]; foreach (DataColumn DataColumn in dtData.Columns) { if (dtChem.Columns.Contains(DataColumn.ColumnName.Replace("ASN", "AS"))) { tempRow[DataColumn.ColumnName.Replace("ASN", "AS")] = dataRow[DataColumn.ColumnName]; if (dataRow[DataColumn.ColumnName] != null && !string.IsNullOrEmpty(dataRow[DataColumn.ColumnName].ToString())) { ulgridElement.DisplayLayout.Bands[0].Columns[DataColumn.ColumnName.Replace("ASN", "AS")] .Hidden = false; } } } foreach (UltraGridColumn column in ulgridElement.DisplayLayout.Bands[0].Columns) { if (column.Hidden || column.Tag == null || string.IsNullOrEmpty(column.Tag.ToString())) continue; string ChemFormula = column.Tag.ToString().ToUpper(); foreach (DataColumn DataColumn in dtData.Columns) { if (dataRow[DataColumn.ColumnName] == null) continue; ChemFormula = ChemFormula.Replace(DataColumn.ColumnName.Replace("ASN", "AS"), dataRow[DataColumn.ColumnName].ToString()); } try { tempRow[column.Key] = Math.Round(double.Parse(new DataTable().Compute(ChemFormula, null).ToString()), 4); } catch (Exception) { tempRow[column.Key] = null; } } dtChem.Rows.Add(tempRow); } } ulgridElement.Refresh(); BaseHelper.setOtherColumnReadOnly(ulgridElement, new[] { "Check" }); GridHelper.RefreshAndAutoSize(ulgridElement); ulgridElement.DisplayLayout.Bands[0].Columns[0].CellAppearance.FontData.Bold = DefaultableBoolean.True; } private void ulgridElement_InitializeRow(object sender, InitializeRowEventArgs e) { if (e.Row.Index < 2) return; foreach (var Cell in e.Row.Cells) { string ColumnsName = Cell.Column.Key; if (ColumnsName.Equals("SAMPLE_NO")) continue; int Result = SteelManagementHelper.CompareChem(Cell.Value, ulgridElement.Rows[0].Cells[ColumnsName].Value, ulgridElement.Rows[1].Cells[ColumnsName].Value); if (Result == 2) Cell.Appearance.ResetBackColor(); else if (Result > 0) Cell.Appearance.BackColor = Color.Red; else if (Result < 0) Cell.Appearance.BackColor = Color.Yellow; else Cell.Appearance.BackColor = Color.LightGreen; } } } }