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');
}
}
}
}