using System; using System.Collections.Generic; using System.Linq; using System.Text; using CoreFS.CA06; using System.Data; using Infragistics.Win.UltraWinGrid; using System.Windows.Forms; using Infragistics.Win.UltraWinEditors; using Core.Mes.Client.Comm; using System.Collections; using Core.Mes.Client.Comm.Server; namespace Core.StlMes.Client.Lims.Data.Steer { /// /// 自定义公共方法类 /// class PublicSteer { public const string chemMax = "ANA_C ANA_SI ANA_MN ANA_P ANA_S ANA_NI ANA_CR ANA_MO ANA_CU ANA_AL ANA_V ANA_NB ANA_TI ANA_B ANA_PB ANA_SN ANA_AS ANA_SB ANA_BI ANA_O ANA_N ANA_H ANA_CA ANA_W ANA_ZR ANA_ZN ANA_CO ANA_ALS"; public const string chemMin = "C Si Mn P S Ni Cr Mo Cu Al V Nb Ti B Pb Sn As Sb Bi O N H Ca W Zr Zn Co Als"; /// /// 激活当前操作的列 /// /// /// /// 主键 public static void ActiveOperateRow(UltraGrid ultraGrid, string strPK, string strPKText) { for (int i = 0; i < ultraGrid.Rows.Count; i++) { if (ultraGrid.Rows[i].Cells[strPK].Text == strPKText) { ultraGrid.Rows[i].Activated = true; } } } /// /// 激活当前操作的列 /// /// /// /// 多主键 public static void ActiveOperateRow(UltraGrid ultraGrid, object[] strPK, object[] strPKText) { bool isEquals; for (int i = 0; i < ultraGrid.Rows.Count; i++) { isEquals = true; for (int j = 0; j < strPK.Length; j++) { if (ultraGrid.Rows[i].Cells[strPK[j].ToString()].Text != strPKText[j].ToString()) { isEquals = false; break; } } if (isEquals == true) { ultraGrid.Rows[i].Activated = true; return; } } } //点击Grid编辑区显示基本信息 public static void ShowBaseInfo(UltraGridRow ur, Panel panel) { if (ur != null) { foreach (UltraGridCell uc in ur.Cells) { if (panel.Controls.ContainsKey("txt" + uc.Column.Key) == true)//判定是否存在text { ((UltraTextEditor)panel.Controls["txt" + uc.Column.Key]).Text = uc.Text.Trim(); } else if (panel.Controls.ContainsKey("ultra" + uc.Column.Key) == true)//判定是否存在text { ((UltraComboEditor)panel.Controls["ultra" + uc.Column.Key]).Text = uc.Text.Trim(); } } } } //点击Grid编辑区显示基本信息 public static void ShowBaseInfo(UltraGridRow ur, Panel panel, string strRule) { if (ur != null) { foreach (UltraGridCell uc in ur.Cells) { if (panel.Controls.ContainsKey("txt" + uc.Column.Key + strRule) == true)//判定是否存在text { ((UltraTextEditor)panel.Controls["txt" + uc.Column.Key + strRule]).Text = uc.Text.Trim(); } else if (panel.Controls.ContainsKey("ultra" + uc.Column.Key + strRule) == true)//判定是否存在text { ((UltraComboEditor)panel.Controls["ultra" + uc.Column.Key + strRule]).Text = uc.Text.Trim(); } } } } //点击Grid编辑区显示基本信息 public static void ShowDataTaleInfo(DataTable dt, Panel panel) { foreach (DataColumn dc in dt.Columns) { if (panel.Controls.ContainsKey("txt" + dc.ColumnName) == true)//判定是否存在text { ((UltraTextEditor)panel.Controls["txt" + dc.ColumnName]).Text = dt.Rows[0][dc.ColumnName].ToString(); } else if (panel.Controls.ContainsKey("ultra" + dc.ColumnName) == true)//判定是否存在text { ((UltraComboEditor)panel.Controls["ultra" + dc.ColumnName]).Text = dt.Rows[0][dc.ColumnName].ToString(); } } } /// /// 隐藏空列 /// /// 本来就隐藏的列名集合 /// 需要操作的UltraGrid /// 需要操作的dt private static void HideNullColumn(string strHidden, UltraGrid ultraGrid, DataTable dataTable) { if (strHidden != "") { foreach (DataColumn dc in dataTable.Columns) { if (strHidden.IndexOf(dc.ColumnName) >= 0) { continue; } foreach (DataRow dr in dataTable.Rows) { if (dr[dc].ToString() != "") { ultraGrid.DisplayLayout.Bands[0].Columns[dc.ColumnName].Hidden = false; break; } else { ultraGrid.DisplayLayout.Bands[0].Columns[dc.ColumnName].Hidden = true; } } } } else { foreach (DataColumn dc in dataTable.Columns) { foreach (DataRow dr in dataTable.Rows) { if (dr[dc].ToString() != "") { ultraGrid.DisplayLayout.Bands[0].Columns[dc.ColumnName].Hidden = false; break; } else { ultraGrid.DisplayLayout.Bands[0].Columns[dc.ColumnName].Hidden = true; } } } } } /// /// 设置列宽 /// /// 需要设置的UltraGrid /// 不需要清除的列 /// /// 宽度 public static void ColumnsWidth(UltraGrid ultraGrid, int haveNum, int width) { int col = ultraGrid.DisplayLayout.Bands[0].Columns.Count; for (int i = haveNum; i < col; i++) { ultraGrid.DisplayLayout.Bands[0].Columns[i].Width = width;//设置列宽 } } /// /// 设置列宽 /// /// 需要设置的UltraGrid /// 不需要清除的列 /// /// 宽度 public static void ColumnsWidth(UltraGrid ultraGrid, int haveNum, int width, string[] noSet) { ArrayList al = new ArrayList(); for (int i = 0; i < noSet.Length; i++) { al.Add(noSet[i]); } int col = ultraGrid.DisplayLayout.Bands[0].Columns.Count; for (int i = haveNum; i < col; i++) { if (!al.Contains(ultraGrid.DisplayLayout.Bands[0].Columns[i].ToString())) { ultraGrid.DisplayLayout.Bands[0].Columns[i].Width = width;//设置列宽 } } } /// /// 刷新Grid数据并根据数据调整Grid列宽 /// /// 需要处理的Grid /// 不需要调整列宽的列 public static void RefreshAndAutoSizeColumns(Infragistics.Win.UltraWinGrid.UltraGrid ultraGrid, Infragistics.Win.UltraWinGrid.UltraGridColumn[] cols) { try { ultraGrid.DataBind(); foreach (Infragistics.Win.UltraWinGrid.UltraGridBand band in ultraGrid.DisplayLayout.Bands) { foreach (Infragistics.Win.UltraWinGrid.UltraGridColumn column in band.Columns) { if (cols != null && cols.Contains(column)) { column.PerformAutoResize(Infragistics.Win.UltraWinGrid.PerformAutoSizeType.AllRowsInBand); } } } ultraGrid.Refresh(); } catch { } } /// /// UltraGrid可读 /// /// UltraGrid /// 可编辑列 public static void setOtherColumnReadOnly(UltraGrid ugr, string[] keys) { if (keys == null || keys.Length == 0) { foreach (UltraGridColumn ugc in ugr.DisplayLayout.Bands[0].Columns) { ugc.CellActivation = Activation.ActivateOnly; } } else { keys.ToArray(); foreach (UltraGridColumn ugc in ugr.DisplayLayout.Bands[0].Columns) { if (!keys.Contains(ugc.Key)) { ugc.CellActivation = Activation.ActivateOnly; } } } if (ugr.DisplayLayout.Bands[0].Columns.Exists("CHK")) { ugr.DisplayLayout.Bands[0].Columns["CHK"].DefaultCellValue = "False"; ugr.DisplayLayout.Bands[0].Columns["CHK"].Header.CheckBoxVisibility = Infragistics.Win.UltraWinGrid.HeaderCheckBoxVisibility.Always; ugr.DisplayLayout.Bands[0].Columns["CHK"].Style = Infragistics.Win.UltraWinGrid.ColumnStyle.CheckBox; } } /// /// UltraGrid列是否隐藏 /// isShow 为true则显示其他隐藏,false则隐藏其他显示 /// UltraGrid /// 隐藏列 public static void setColumnShowOrHidden(UltraGrid ugr, string[] keys, bool isShow) { if (keys == null || keys.Length == 0) { foreach (UltraGridColumn ugc in ugr.DisplayLayout.Bands[0].Columns) { ugc.Hidden = false; } } else { keys.ToArray(); foreach (UltraGridColumn ugc in ugr.DisplayLayout.Bands[0].Columns) { if (keys.Contains(ugc.Key)) { if (isShow) { ugc.Hidden = false; } else { ugc.Hidden = true; } } else { if (isShow) { ugc.Hidden = true; } } } } } //初始化列 public static void InitColumns(object[] arrColumns, object[] arrCaption, DataTable dataTable1) { if (arrColumns.Length == 0 || arrColumns.Length != arrCaption.Length) { return; } dataTable1.Columns.Clear();//先清除 DataColumn dc; for (int i = 0; i < arrColumns.Length; i++) { try { dc = new DataColumn(arrColumns[i].ToString()); dc.Caption = arrCaption[i].ToString(); if (dc.ColumnName == "CHK") { dc.DataType = typeof(bool); dc.DefaultValue = "False"; } dataTable1.Columns.Add(dc); } catch { continue; } } } //初始化列 public static void InitColumns(object[] arrColumns, object[] arrCaption, DataTable dataTable1, int num) { if (arrColumns.Length == 0 || arrColumns.Length != arrCaption.Length) { return; } int len = dataTable1.Columns.Count; for (int i = num; i <= len - num; i++) { dataTable1.Columns.RemoveAt(num); } DataColumn dc; for (int i = 0; i < arrColumns.Length; i++) { try { dc = new DataColumn(arrColumns[i].ToString()); dc.Caption = arrCaption[i].ToString(); dataTable1.Columns.Add(dc); if (dc.ColumnName == "CHK") { dc.DataType = typeof(bool); dc.DefaultValue = "False"; } } catch { continue; } } } public static void InitColumns(string[] arrColumns, string[] arrCaption, DataTable dataTable, UltraGrid ultraGrid, string[] show, bool isShow, string[] ope) { InitColumns(arrColumns, arrCaption, dataTable); setColumnShowOrHidden(ultraGrid, show, isShow); setOtherColumnReadOnly(ultraGrid, ope); } //初始化列 public static void InitColumns(string[] arrColumns, string[] chemMax, object[] arrCaption, string[] chemMin, DataTable dataTable1) { if (arrColumns.Length == 0 || arrColumns.Length != arrCaption.Length || chemMax.Length != chemMin.Length) { return; } dataTable1.Columns.Clear();//先清除 DataColumn dc; for (int i = 0; i < arrColumns.Length; i++) { try { dc = new DataColumn(arrColumns[i].ToString()); dc.Caption = arrCaption[i].ToString(); dataTable1.Columns.Add(dc); if (dc.ColumnName == "CHK") { dc.DataType = typeof(bool); dc.DefaultValue = "False"; } } catch { continue; } } for (int i = 0; i < chemMax.Length; i++) { try { dc = new DataColumn(chemMax[i]); dc.Caption = chemMin[i]; dataTable1.Columns.Add(dc); } catch { continue; } } } //选择事件 /// /// /// /// /// /// public static void SelectRow(UltraGrid ultraGrid) { if (ultraGrid.DisplayLayout.Bands[0].Columns.Exists("CHK")) { foreach (UltraGridRow uRow in ultraGrid.Selected.Rows) { if (uRow.GetType() != typeof(Infragistics.Win.UltraWinGrid.UltraGridGroupByRow)) { uRow.Cells["CHK"].Value = true; } } } } //b保留修约位数 public static string SavePoint(string value, int len) { if (value == "") { return ""; } int position = value.IndexOf('.'); if (position < 0) { return value + ".".PadRight(len + 1, '0'); } else { return value.Substring(0, position + 1) + value.Substring(position + 1).PadRight(len, '0'); } } } }