using System;
using System.Collections;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
using Infragistics.Excel;
using Infragistics.Win;
using Infragistics.Win.Layout;
using Infragistics.Win.UltraWinDataSource;
using Infragistics.Win.UltraWinEditors;
using Infragistics.Win.UltraWinGrid;
using Infragistics.Win.UltraWinGrid.ExcelExport;
namespace Core.StlMes.Client.PnCost
{
///
/// 控件设置、属性相关公用
///
public class ClsControlPack
{
public static DataSet FrmDataSet = new DataSet();
///
/// 设置控件样式
///
///
/// 颜色标致
public static void SetUltraGridStyle(UltraGrid ulgrid, int intFlag)
{
try
{
Color CardBackColor = (intFlag.Equals(1)
? Color.FromArgb(255, 218, 232, 248)
: (intFlag.Equals(2) ? Color.PaleTurquoise : Color.Honeydew));
// Color RowBackColor = Color.LightBlue;
ulgrid.DisplayLayout.Override.CardAreaAppearance.BackColor = CardBackColor; //卡片样式背景
ulgrid.DisplayLayout.Override.HeaderAppearance.BackColor = CardBackColor; //表头背景
ulgrid.DisplayLayout.Override.RowAppearance.ResetBackColor(); //行的背景色
ulgrid.DisplayLayout.BorderStyle = Infragistics.Win.UIElementBorderStyle.None; //设置边框
if (ulgrid.Parent != null) ulgrid.Parent.BackColor = CardBackColor;
}
catch { }
}
///
/// 获取子窗体弹出的位置坐标
///
///
///
public static Point GetChildWindowLocation(Size ChildWindowSize)
{
Point point = Cursor.Position;
int width = point.X + ChildWindowSize.Width - Screen.PrimaryScreen.Bounds.Width;
int height = point.Y + ChildWindowSize.Height + 32 - Screen.PrimaryScreen.Bounds.Height;
width = (width > 0) ? (point.X - width) : point.X; // X坐标
height = (height > 0) ? (point.Y - height + 32) : (point.Y + 32); // Y坐标
return new Point(width, height);
}
public static void CopyDataToDatatable(ref DataTable src, ref DataTable dest, bool ClearExists)
{
if (src == null || dest == null)
{
return;
}
if (ClearExists)
{
dest.Rows.Clear();
}
DataRow CurRow, NewRow;
for (int i = 0; i < src.Rows.Count; i++)
{
CurRow = src.Rows[i];
NewRow = dest.NewRow();
for (int j = 0; j < src.Columns.Count; j++)
{
try
{
if (dest.Columns.Contains(src.Columns[j].ColumnName))
{
NewRow[src.Columns[j].ColumnName] = CurRow[j];
}
}
catch { }
}
dest.Rows.Add(NewRow);
}
}
public static void RefreshAndAutoSize(UltraGrid ultraGrid)
{
try
{
ultraGrid.DataBind();
foreach (UltraGridBand band in ultraGrid.DisplayLayout.Bands)
{
foreach (UltraGridColumn column in band.Columns)
{
column.PerformAutoResize(PerformAutoSizeType.AllRowsInBand);
}
}
ultraGrid.Refresh();
}
catch { }
}
public static bool SetMyComboEditor(ref UltraComboEditor cbEdt, ref ValueList vlist, bool bNull)
{
if (cbEdt == null || vlist == null)
{
return false;
}
cbEdt.Items.Clear();
if (bNull)
{
cbEdt.Items.Add(null, "");
}
for (int i = 0; i < vlist.ValueListItems.Count; i++)
{
try
{
cbEdt.Items.Add(vlist.ValueListItems[i].DataValue, vlist.ValueListItems[i].DisplayText);
}
catch { }
}
return true;
}
#region ultraGrid设置
public static void SetUltraGridAppearance(Control Parent)
{
UltraGrid grid = null;
foreach (Control ctrl in Parent.Controls)
{
try
{
if (ctrl.GetType().Equals(typeof(UltraGrid)))
{
grid = (UltraGrid)ctrl;
if (grid == null)
{
continue;
}
try
{
if (grid.DisplayLayout.Bands.Count > 0)
{
if (grid.DisplayLayout.Bands[0].CardView)
{
continue;
}
//grid.DisplayLayout.UseFixedHeaders = true;
grid.DisplayLayout.ViewStyleBand = ViewStyleBand.Vertical;
grid.DisplayLayout.GroupByBox.Prompt = "将需要分组的列拖到此处";
grid.DisplayLayout.Override.MaxSelectedRows = 0;
grid.DisplayLayout.Override.SelectTypeRow = SelectType.Single;
grid.DisplayLayout.Override.SelectTypeCol = SelectType.None;
grid.DisplayLayout.Override.BorderStyleCell = UIElementBorderStyle.Solid;
grid.DisplayLayout.Override.BorderStyleRow = UIElementBorderStyle.Solid;
grid.DisplayLayout.Override.WrapHeaderText = DefaultableBoolean.True;
grid.DisplayLayout.Override.DataErrorRowAppearance.BackColor = Color.Lime;
grid.DisplayLayout.Override.SupportDataErrorInfo = SupportDataErrorInfo.RowsOnly;
//grid.DisplayLayout.CaptionVisible = DefaultableBoolean.True;
grid.DisplayLayout.Override.HeaderStyle = HeaderStyle.Standard;
grid.DisplayLayout.Override.MinRowHeight = 22;
//grid.DisplayLayout.Override.RowSelectorNumberStyle = RowSelectorNumberStyle.RowIndex;
grid.DisplayLayout.Override.CellClickAction = CellClickAction.EditAndSelectText;
grid.DisplayLayout.Override.ActiveRowAppearance.FontData.Bold = DefaultableBoolean.True;
grid.DisplayLayout.Override.ActiveRowAppearance.ForeColor = Color.Empty;
grid.DisplayLayout.Override.ActiveRowAppearance.BackColor = Color.Empty;
grid.DisplayLayout.Override.RowAppearance.BackColor = Color.White;
grid.DisplayLayout.Override.RowAppearance.BorderColor = Color.DarkGray;
grid.DisplayLayout.Override.RowAppearance.TextVAlign = VAlign.Middle;
grid.DisplayLayout.Override.RowAlternateAppearance.BackColor = Color.MintCream; // Color.FromArgb(229, 255, 229);
grid.DisplayLayout.Override.RowSelectorAppearance.TextVAlign = VAlign.Middle;
grid.DisplayLayout.Override.RowSelectorAppearance.BackColor =Color.FromArgb(158, 191, 231);// Color.LightBlue; // LightBlue Color.FromArgb(205, 228, 225);
grid.DisplayLayout.Override.HeaderAppearance.BackColor = Color.FromArgb(158, 191, 231); //Color.LightBlue; // Color.FromArgb(205, 228, 225);
grid.DisplayLayout.Appearance.BackColor = Color.FromArgb(255, 218, 232, 248);
}
}
catch { }
try
{
if (grid.DisplayLayout.Bands.Count > 1)
{
grid.DisplayLayout.Bands[1].Override.HeaderAppearance.BackColor = Color.FromArgb(233, 242, 199);
grid.DisplayLayout.Bands[1].Override.HeaderAppearance.BackColor = Color.FromArgb(170, 184, 131);
grid.DisplayLayout.Bands[1].Override.HeaderAppearance.BackGradientStyle = GradientStyle.Vertical;
grid.DisplayLayout.Bands[1].Override.RowSelectorAppearance.BackColor = Color.FromArgb(233, 242, 199);
grid.DisplayLayout.Bands[1].Override.RowSelectorAppearance.BackColor = Color.FromArgb(170, 184, 131);
grid.DisplayLayout.Bands[1].Override.RowSelectorAppearance.BackGradientStyle = GradientStyle.Vertical;
}
}
catch { }
try
{
foreach (UltraGridBand band in grid.DisplayLayout.Bands)
{
band.Override.AllowRowLayoutCellSizing = RowLayoutSizing.None;
band.Override.AllowRowLayoutCellSpanSizing = GridBagLayoutAllowSpanSizing.None;
band.Override.AllowRowLayoutColMoving = GridBagLayoutAllowMoving.None;
band.Override.AllowRowLayoutLabelSizing = RowLayoutSizing.Horizontal;
band.Override.AllowRowLayoutLabelSpanSizing = GridBagLayoutAllowSpanSizing.None;
}
}
catch { }
try
{
grid.KeyDown += new KeyEventHandler(grid_KeyDown);
}
catch { }
try
{
grid.DoubleClickCell += new DoubleClickCellEventHandler(grid_DoubleClickCell);
}
catch { }
RefreshAndAutoSize(grid);
}
else
{
SetUltraGridAppearance(ctrl);
}
}
catch (Exception ex)
{
Debug.Print(ex.Message);
}
}
}
public static bool GetHashtableMinKeyValue(Hashtable htbl, out int iValue)
{
iValue = 0;
if (htbl == null || htbl.Count == 0)
{
return false;
}
try
{
ArrayList alist = new ArrayList(htbl.Keys);
int iKey = 0;
for (int idx = 0; idx < alist.Count; idx++)
{
if (idx == 0)
{
iKey = Convert.ToInt32(alist[idx]);
iValue = Convert.ToInt32(htbl[alist[idx]]);
}
else if (Convert.ToInt32(alist[idx]) < iKey)
{
iKey = Convert.ToInt32(alist[idx]);
iValue = Convert.ToInt32(htbl[alist[idx]]);
}
}
return true;
}
catch
{
return false;
}
}
public static bool GetHashtableMaxKeyValue(Hashtable htbl, out int iValue)
{
iValue = 0;
if (htbl == null || htbl.Count == 0)
{
return false;
}
try
{
ArrayList alist = new ArrayList(htbl.Keys);
int iKey = 0;
for (int idx = 0; idx < alist.Count; idx++)
{
if (idx == 0)
{
iKey = Convert.ToInt32(alist[idx]);
iValue = Convert.ToInt32(htbl[alist[idx]]);
}
else if (Convert.ToInt32(alist[idx]) > iKey)
{
iKey = Convert.ToInt32(alist[idx]);
iValue = Convert.ToInt32(htbl[alist[idx]]);
}
}
return true;
}
catch
{
return false;
}
}
static void grid_KeyDown(object sender, KeyEventArgs e)
{
try
{
UltraGrid grid = (UltraGrid)sender;
if (sender == null)
{
return;
}
UltraGridCell cell = grid.ActiveCell;
if (cell != null)
{
bool bOK = false;
int iRow = cell.Row.Index;
int iColumn = cell.Column.Index;
if (e.KeyCode == Keys.Up)
{
iRow--;
if (iRow >= 0)
{
bOK = true;
}
}
else if (e.KeyCode == Keys.Down)
{
iRow++;
if (cell.Band.Index == 0)
{
if (iRow <= grid.Rows.Count - 1)
{
bOK = true;
}
}
else
{
if (iRow <= cell.Row.ParentRow.ChildBands[cell.Band.Key].Rows.Count - 1)
{
bOK = true;
}
}
}
else if (e.KeyCode == Keys.Left)
{
Hashtable htbl = new Hashtable();
int iCurr = cell.Column.RowLayoutColumnInfo.OriginX;
for (int i = 0; i < cell.Band.Columns.Count; i++)
{
if (!cell.Band.Columns[i].Hidden && cell.Band.Columns[i].RowLayoutColumnInfo.LabelPosition != LabelPosition.LabelOnly)
{
if (cell.Band.Columns[i].RowLayoutColumnInfo.OriginX < iCurr)
{
if (!htbl.Contains(cell.Band.Columns[i].RowLayoutColumnInfo.OriginX))
{
htbl.Add(cell.Band.Columns[i].RowLayoutColumnInfo.OriginX, cell.Band.Columns[i].Index);
}
}
}
}
if (GetHashtableMaxKeyValue(htbl, out iColumn))
{
bOK = true;
}
}
else if (e.KeyCode == Keys.Right)
{
Hashtable htbl = new Hashtable();
int iCurr = cell.Column.RowLayoutColumnInfo.OriginX;
for (int i = 0; i < cell.Band.Columns.Count; i++)
{
if (!cell.Band.Columns[i].Hidden && cell.Band.Columns[i].RowLayoutColumnInfo.LabelPosition != LabelPosition.LabelOnly)
{
if (cell.Band.Columns[i].RowLayoutColumnInfo.OriginX > iCurr)
{
if (!htbl.Contains(cell.Band.Columns[i].RowLayoutColumnInfo.OriginX))
{
htbl.Add(cell.Band.Columns[i].RowLayoutColumnInfo.OriginX, cell.Band.Columns[i].Index);
}
}
}
}
if (GetHashtableMinKeyValue(htbl, out iColumn))
{
bOK = true;
}
}
if (bOK)
{
if (cell.Band.Index == 0)
{
grid.ActiveCell = grid.Rows[iRow].Cells[iColumn];
}
else
{
grid.ActiveCell = cell.Row.ParentRow.ChildBands[cell.Band.Key].Rows[iRow].Cells[iColumn];
}
grid.PerformAction(UltraGridAction.EnterEditMode);
}
}
}
catch { }
}
static void grid_DoubleClickCell(object sender, DoubleClickCellEventArgs e)
{
try
{
if (e.Cell.Row.HasChild())
{
if (e.Cell.Row.IsExpanded)
{
e.Cell.Row.CollapseAll();
}
else
{
e.Cell.Row.ExpandAll();
}
}
}
catch { }
}
#endregion
public static void SetGridValuelist(ref UltraGrid myGrid, string strColumn, ref ValueList vlist)
{
bool Contains = GridContainsColumn(myGrid, strColumn);
try
{
if (Contains) myGrid.DisplayLayout.Bands[0].Columns[strColumn].ValueList = vlist;
}
catch { }
finally
{
if (Contains) myGrid.DisplayLayout.Bands[0].Columns[strColumn].Style = Infragistics.Win.UltraWinGrid.ColumnStyle.DropDownList;
}
}
public static void SetGridValuelist(ref UltraGrid myGrid, int BandIndex, string strColumn, ref ValueList vlist)
{
try
{
if (GridContainsColumn(myGrid, BandIndex, strColumn))
{
myGrid.DisplayLayout.Bands[BandIndex].Columns[strColumn].ValueList = vlist;
}
}
catch { }
finally
{
myGrid.DisplayLayout.Bands[BandIndex].Columns[strColumn].Style = Infragistics.Win.UltraWinGrid.ColumnStyle.DropDownList;
}
}
public static void InitUltraDataSource(UltraDataSource ultDataSource)
{
try
{
int iColumnsCount = ultDataSource.Band.Columns.Count;
object[] obj = new object[iColumnsCount];
if (ultDataSource.Rows.Count > 0) ultDataSource.Rows.Clear();
for (int i = 0; i < ultDataSource.Band.Columns.Count; i++)
{
try
{
if (ultDataSource.Band.Columns[i].DataType == typeof(Bitmap) ||
ultDataSource.Band.Columns[i].DataType == typeof(Image))
obj[i] = null;
else if (ultDataSource.Band.Columns[i].DataType == typeof(DateTime))
obj[i] = DBNull.Value;
else if (ultDataSource.Band.Columns[i].DataType == typeof(decimal) ||
ultDataSource.Band.Columns[i].DataType == typeof(double) ||
ultDataSource.Band.Columns[i].DataType == typeof(Single))
obj[i] = 0;
else
obj[i] = "";
}
catch { }
}
ultDataSource.Rows.Add(obj);
}
catch { }
}
///
/// 初始化UltraDataSource
///
///
public static void InitUserControl(UltraDataSource ultDataSource, UltraGrid ultraGrid)
{
try
{
InitUltraDataSource(ultDataSource);
ultraGrid.UpdateData();
}
catch { }
}
///
/// UltraDataSource数据重置
///
///
public static void ResetUltraDataSource(UltraDataSource ultDataSource)
{
try
{
if (ultDataSource.Rows.Count == 0)
{
InitUltraDataSource(ultDataSource);
return;
}
for (int i = 0; i < ultDataSource.Band.Columns.Count; i++)
{
try
{
if (ultDataSource.Band.Columns[i].DataType == typeof(Bitmap) ||
ultDataSource.Band.Columns[i].DataType == typeof(Image))
ultDataSource.Rows[0][i] = null;
else if (ultDataSource.Band.Columns[i].DataType == typeof(DateTime))
ultDataSource.Rows[0][i] = DBNull.Value;
else if (ultDataSource.Band.Columns[i].DataType == typeof(decimal) ||
ultDataSource.Band.Columns[i].DataType == typeof(double) ||
ultDataSource.Band.Columns[i].DataType == typeof(Single))
ultDataSource.Rows[0][i] = 0;
else
ultDataSource.Rows[0][i] = "";
}
catch { }
}
}
catch { }
}
///
/// UltraDataSource数据重置
///
///
public static void ResetUltraDataSource(UltraDataSource ultDataSource, UltraGrid ultraGrid)
{
try
{
ResetUltraDataSource(ultDataSource);
}
catch { }
finally
{
if (ultraGrid != null)
ultraGrid.UpdateData();
}
}
///
/// ultraGrid设置Cell只读属性
///
///
///
public static void SetUltraGridCellReadOnly(ref UltraGrid ultraGrid, bool bReadOnly)
{
try
{
for (int i = 0; i < ultraGrid.DisplayLayout.Bands[0].Columns.Count; i++)
{
ultraGrid.DisplayLayout.Bands[0].Columns[i].CellActivation = (bReadOnly ? Activation.ActivateOnly : Activation.AllowEdit);
ultraGrid.DisplayLayout.Bands[0].Columns[i].CellAppearance.BackColor = (bReadOnly ? Color.LightBlue : Color.White);
}
}
catch { }
}
///
/// UltraDataSource是否包含strColumnName列
///
///
///
///
public static bool UltraDataSourceContainsColumn(ref UltraDataSource ultDataSource, string strColumnName)
{
try
{
for (int i = 0; i < ultDataSource.Band.Columns.Count; i++)
{
if (ultDataSource.Band.Columns[i].Key == strColumnName)
return true;
}
}
catch { }
return false;
}
public static bool GridContainsColumn(UltraGrid grid, string strColumn)
{
for (int i = 0; i < grid.DisplayLayout.Bands[0].Columns.Count; i++)
{
if (grid.DisplayLayout.Bands[0].Columns[i].Key.Equals(strColumn,StringComparison.OrdinalIgnoreCase))
return true;
}
return false;
}
public static bool GridContainsColumn(UltraGridBand band, string strColumn)
{
for (int i = 0; i < band.Columns.Count; i++)
{
if (band.Columns[i].Key.Equals(strColumn))
return true;
}
return false;
}
public static bool GridContainsColumn(UltraGrid grid, int BandIndex, string strColumn)
{
if (BandIndex <= grid.DisplayLayout.Bands.Count - 1)
{
for (int i = 0; i < grid.DisplayLayout.Bands[BandIndex].Columns.Count; i++)
{
if (grid.DisplayLayout.Bands[BandIndex].Columns[i].Key.Equals(strColumn))
return true;
}
}
return false;
}
public static void SetGridGroupBy(ref UltraGrid myGrid1, bool bAllowGroupBy)
{
try
{
if (!bAllowGroupBy)
{
for (int i = 0; i < myGrid1.DisplayLayout.Bands[0].Columns.Count; i++)
{
try
{
if (myGrid1.DisplayLayout.Bands[0].Columns[i].IsGroupByColumn)
myGrid1.DisplayLayout.Bands[0].Columns[i].ResetIsGroupByColumn();
}
catch { }
}
}
myGrid1.DisplayLayout.GroupByBox.Hidden = !bAllowGroupBy;
}
catch { }
}
public static void SetUltraGridRowFilter(ref UltraGrid myGrid1, bool bAllowFilter)
{
try
{
if (bAllowFilter)
{
if (myGrid1.DisplayLayout.Override.FilterUIType != FilterUIType.FilterRow)
myGrid1.DisplayLayout.Override.FilterUIType = FilterUIType.FilterRow;
for (int i = 0; i < myGrid1.DisplayLayout.Bands.Count; i++)
{
for (int j = 0; j < myGrid1.DisplayLayout.Bands[i].Columns.Count; j++)
{
try
{
if (!myGrid1.DisplayLayout.Bands[i].Columns[j].Hidden &&
myGrid1.DisplayLayout.Bands[i].Columns[j].RowLayoutColumnInfo.LabelPosition != LabelPosition.LabelOnly)
myGrid1.DisplayLayout.Bands[i].Columns[j].AllowRowFiltering = Infragistics.Win.DefaultableBoolean.True;
}
catch { }
}
}
}
else
{
if (myGrid1.DisplayLayout.Override.FilterUIType != FilterUIType.HeaderIcons)
myGrid1.DisplayLayout.Override.FilterUIType = FilterUIType.HeaderIcons;
for (int i = 0; i < myGrid1.DisplayLayout.Bands.Count; i++)
{
try
{
myGrid1.DisplayLayout.Bands[i].ColumnFilters.ClearAllFilters();
}
catch { }
for (int j = 0; j < myGrid1.DisplayLayout.Bands[i].Columns.Count; j++)
{
try
{
myGrid1.DisplayLayout.Bands[i].Columns[j].AllowRowFiltering = Infragistics.Win.DefaultableBoolean.False;
}
catch { }
}
}
}
}
catch { }
}
///
/// 设置Grid的Cell的DropDownList绑定下拉的形式
///
/// 要设置的列
/// 要设置的表名
/// 列头的中文
/// 列宽
/// 要设置的Grid
/// 下拉绑定的表
/// 值对应的字段名
/// 显示对应的字段名
public static void SetGridDropDownList(string MasterColumnName, string TableName, string caption, int ColumnWidth, Infragistics.Win.UltraWinGrid.UltraGridBase Grid, System.Data.DataTable DropTable, string ValueMember, string DisplayMember)
{
try
{
Grid.DisplayLayout.Bands[TableName].Columns[MasterColumnName].Hidden = false;
Grid.DisplayLayout.Bands[TableName].Columns[MasterColumnName].Header.Caption = caption;
Grid.DisplayLayout.Bands[TableName].Columns[MasterColumnName].Header.Appearance.TextHAlign = Infragistics.Win.HAlign.Center;
Grid.DisplayLayout.Bands[TableName].Columns[MasterColumnName].Width = ColumnWidth;
Grid.DisplayLayout.Bands[TableName].Columns[MasterColumnName].Style = Infragistics.Win.UltraWinGrid.ColumnStyle.DropDownList;
Infragistics.Win.UltraWinGrid.UltraDropDown ultraCombo = new Infragistics.Win.UltraWinGrid.UltraDropDown();
Grid.FindForm().Controls.Add(ultraCombo);
ultraCombo.DisplayMember = DisplayMember;
ultraCombo.ValueMember = ValueMember;
ultraCombo.Visible = false;
ultraCombo.DataSource = DropTable.DefaultView;
ultraCombo.Width = ColumnWidth;
foreach (System.Data.DataColumn col in DropTable.Columns)
{
if (col.ColumnName != DisplayMember)
{
ultraCombo.DisplayLayout.Bands[0].Columns[col.ColumnName].Hidden = true;
}
else
{
ultraCombo.DisplayLayout.Bands[0].Columns[col.ColumnName].Band.ColHeadersVisible = false;
ultraCombo.DisplayLayout.Bands[0].Columns[col.ColumnName].Width = ultraCombo.Width;
}
}
Grid.DisplayLayout.Bands[TableName].Columns[MasterColumnName].ValueList = ultraCombo;
Grid.DisplayLayout.Bands[TableName].Columns[MasterColumnName].CellAppearance.TextHAlign = Infragistics.Win.HAlign.Left;
Grid.DisplayLayout.Bands[TableName].Columns[MasterColumnName].CellAppearance.TextVAlign = Infragistics.Win.VAlign.Middle;
}
catch (System.Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
///
/// 设置Grid的Cell的DropDownList绑定下拉的形式
///
/// 要设置的列
/// 要设置的表名
/// 列头的中文
/// 列宽
/// 要设置的Grid
/// 下拉绑定的表
/// 值对应的字段名
/// 显示对应的字段名
public static void SetGridDropDownListCell(string MasterColumnName, Int32 i, string caption, int ColumnWidth, Infragistics.Win.UltraWinGrid.UltraGridBase Grid, System.Data.DataTable DropTable, string ValueMember, string DisplayMember)
{
try
{
Grid.DisplayLayout.Bands[i].Columns[MasterColumnName].Hidden = false;
Grid.DisplayLayout.Bands[i].Columns[MasterColumnName].Header.Caption = caption;
Grid.DisplayLayout.Bands[i].Columns[MasterColumnName].Header.Appearance.TextHAlign = Infragistics.Win.HAlign.Center;
Grid.DisplayLayout.Bands[i].Columns[MasterColumnName].Width = ColumnWidth;
Grid.DisplayLayout.Bands[i].Columns[MasterColumnName].Style = Infragistics.Win.UltraWinGrid.ColumnStyle.DropDownList;
Infragistics.Win.UltraWinGrid.UltraDropDown ultraCombo = new Infragistics.Win.UltraWinGrid.UltraDropDown();
Grid.FindForm().Controls.Add(ultraCombo);
ultraCombo.DisplayMember = DisplayMember;
ultraCombo.ValueMember = ValueMember;
ultraCombo.Visible = false;
ultraCombo.DataSource = DropTable.DefaultView;
ultraCombo.Width = ColumnWidth;
foreach (System.Data.DataColumn col in DropTable.Columns)
{
if (col.ColumnName != DisplayMember)
{
ultraCombo.DisplayLayout.Bands[0].Columns[col.ColumnName].Hidden = true;
}
else
{
ultraCombo.DisplayLayout.Bands[0].Columns[col.ColumnName].Band.ColHeadersVisible = false;
ultraCombo.DisplayLayout.Bands[0].Columns[col.ColumnName].Width = ultraCombo.Width;
}
}
Grid.DisplayLayout.Bands[i].Columns[MasterColumnName].ValueList = ultraCombo;
Grid.DisplayLayout.Bands[i].Columns[MasterColumnName].CellAppearance.TextHAlign = Infragistics.Win.HAlign.Left;
Grid.DisplayLayout.Bands[i].Columns[MasterColumnName].CellAppearance.TextVAlign = Infragistics.Win.VAlign.Middle;
}
catch (System.Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
///
/// 设置Grid的Cell的DropDownList绑定下拉的形式是可编辑
///
/// 要设置的列
/// 要设置的表名
/// 列头的中文
/// 列宽
/// 要设置的Grid
/// 下拉绑定的表
/// 值对应的字段名
/// 显示对应的字段名
public static void SetGridDropDownListCellEdit(string MasterColumnName, Int32 i, string caption, int ColumnWidth, Infragistics.Win.UltraWinGrid.UltraGridBase Grid, System.Data.DataTable DropTable, string ValueMember, string DisplayMember)
{
try
{
Grid.DisplayLayout.Bands[i].Columns[MasterColumnName].Hidden = false;
Grid.DisplayLayout.Bands[i].Columns[MasterColumnName].Header.Caption = caption;
Grid.DisplayLayout.Bands[i].Columns[MasterColumnName].Header.Appearance.TextHAlign = Infragistics.Win.HAlign.Center;
Grid.DisplayLayout.Bands[i].Columns[MasterColumnName].Width = ColumnWidth;
Grid.DisplayLayout.Bands[i].Columns[MasterColumnName].Style = Infragistics.Win.UltraWinGrid.ColumnStyle.DropDownList;
Infragistics.Win.UltraWinGrid.UltraDropDown ultraCombo = new Infragistics.Win.UltraWinGrid.UltraDropDown();
Grid.FindForm().Controls.Add(ultraCombo);
ultraCombo.DisplayMember = DisplayMember;
ultraCombo.ValueMember = ValueMember;
ultraCombo.Visible = false;
ultraCombo.DataSource = DropTable.DefaultView;
ultraCombo.Width = ColumnWidth;
foreach (System.Data.DataColumn col in DropTable.Columns)
{
if (col.ColumnName != DisplayMember)
{
ultraCombo.DisplayLayout.Bands[0].Columns[col.ColumnName].Hidden = true;
}
else
{
ultraCombo.DisplayLayout.Bands[0].Columns[col.ColumnName].Band.ColHeadersVisible = false;
ultraCombo.DisplayLayout.Bands[0].Columns[col.ColumnName].Width = ultraCombo.Width;
}
}
Grid.DisplayLayout.Bands[i].Columns[MasterColumnName].ValueList = ultraCombo;
Grid.DisplayLayout.Bands[i].Columns[MasterColumnName].CellAppearance.TextHAlign = Infragistics.Win.HAlign.Left;
Grid.DisplayLayout.Bands[i].Columns[MasterColumnName].CellAppearance.TextVAlign = Infragistics.Win.VAlign.Middle;
}
catch (System.Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
///
/// 设置Grid 的编辑性
///
///
public static void SetRowEdit(Infragistics.Win.UltraWinGrid.UltraGridBase Grid)
{
foreach (Infragistics.Win.UltraWinGrid.UltraGridRow row in Grid.Rows)
{
row.Activation = Infragistics.Win.UltraWinGrid.Activation.NoEdit;
}
}
///
/// 新增数据
///
///
public static void Add(Infragistics.Win.UltraWinGrid.UltraGridBase Grid)
{
Grid.UpdateData();
UltraGridRow ur = Grid.DisplayLayout.Bands[0].AddNew();
ur.Activation = Infragistics.Win.UltraWinGrid.Activation.AllowEdit;
}
///
/// 修改数据
///
///
public static void Update(Infragistics.Win.UltraWinGrid.UltraGridBase Grid)
{
if (Grid.ActiveRow == null)
{
MessageBox.Show("请确认你要修改的记录行", "提示", System.Windows.Forms.MessageBoxButtons.OK, MessageBoxIcon.Question);
return;
}
SetRowEdit(Grid);
Grid.ActiveRow.Activation = Activation.AllowEdit;
}
///
/// 删除数据
///
///
public static void Delete(Infragistics.Win.UltraWinGrid.UltraGrid Grid)
{
if (Grid.Selected.Rows.Count > 0)
{
System.Windows.Forms.DialogResult t = MessageBox.Show("你确认要删除选择行?", "提示", System.Windows.Forms.MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (t == System.Windows.Forms.DialogResult.Yes)
{
Grid.DeleteSelectedRows(false);
}
Grid.UpdateData();
return;
}
else if (Grid.DisplayLayout.ActiveRow != null)
{
System.Windows.Forms.DialogResult t = MessageBox.Show("你确认要删除选择行?", "提示", System.Windows.Forms.MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (t == System.Windows.Forms.DialogResult.Yes)
{
Grid.DisplayLayout.ActiveRow.Delete(false);
}
Grid.UpdateData();
return;
}
else
{
MessageBox.Show("请确认你要删除的行", "提示", System.Windows.Forms.MessageBoxButtons.OK);
}
}
///
/// 取消当前操作
///
///
public static void Cancel(Infragistics.Win.UltraWinGrid.UltraGrid Grid, string szTableName)
{
if (Grid.DisplayLayout.ActiveRow != null && Grid.DisplayLayout.ActiveRow.IsAddRow)
{
System.Windows.Forms.DialogResult t = MessageBox.Show("已有数据改变,确认取消?", "提示", System.Windows.Forms.MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (t == System.Windows.Forms.DialogResult.Yes)
{
Grid.DisplayLayout.ActiveRow.Delete(false);
FrmDataSet.Tables[szTableName].RejectChanges();
SetRowEdit(Grid);
return;
}
else
{
return;
}
}
Grid.UpdateData();
if (FrmDataSet.GetChanges() != null)
{
System.Windows.Forms.DialogResult t = MessageBox.Show("已有数据改变,确认取消?", "提示", System.Windows.Forms.MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (t == System.Windows.Forms.DialogResult.Yes)
{
FrmDataSet.RejectChanges();
SetRowEdit(Grid);
if (Grid.ActiveCell != null)
{
Grid.ActiveCell.Activated = false;
}
}
}
}
///
/// 取消操作
///
/// UltraGrid
/// Table
public static void dataCancel(Infragistics.Win.UltraWinGrid.UltraGrid Grid, DataTable dataTable)
{
if (Grid.DisplayLayout.ActiveRow != null && Grid.DisplayLayout.ActiveRow.IsAddRow)
{
System.Windows.Forms.DialogResult t = MessageBox.Show("已有数据改变,确认取消?", "提示", System.Windows.Forms.MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (t == System.Windows.Forms.DialogResult.Yes)
{
Grid.DisplayLayout.ActiveRow.Delete(false);
dataTable.RejectChanges();
SetRowEdit(Grid);
return;
}
else
{
return;
}
}
Grid.UpdateData();
if (dataTable.GetChanges() != null)
{
System.Windows.Forms.DialogResult t = MessageBox.Show("已有数据改变,确认取消?", "提示", System.Windows.Forms.MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (t == System.Windows.Forms.DialogResult.Yes)
{
dataTable.RejectChanges();
SetRowEdit(Grid);
if (Grid.ActiveCell != null)
{
Grid.ActiveCell.Activated = false;
}
}
}
}
public static void SetReadOnly(UltraGrid ultraGrid)
{
try
{
for (var i = 0; i < ultraGrid.DisplayLayout.Bands[0].Columns.Count; i++)
ultraGrid.DisplayLayout.Bands[0].Columns[i].CellActivation = Activation.ActivateOnly;
}
catch
{
}
}
///
/// 某个空间是否某个特定的类型
///
///
///
///
public static bool SpecificType(Control ctrl, Type SomeType)
{
if (ctrl == null || SomeType == null) return false;
Type type = ctrl.GetType();
while (type != null)
{
if (type.Equals(SomeType))
return true;
type = type.BaseType;
}
return false;
}
public static void ExportDataWithSaveDialog(ref UltraGrid ugData, string strFileName)
{
try
{
if (ugData.Rows.Count == 0) return;
if (strFileName.Length == 0)
strFileName = "未命名";
SaveFileDialog dlg = new SaveFileDialog();
dlg.Title = "保存";
dlg.OverwritePrompt = true;
dlg.Filter = "Excel文件(*.xls)|*.xls";
dlg.AddExtension = true;
dlg.FileName = strFileName;
string strCaption = strFileName;
if (dlg.ShowDialog() == DialogResult.OK)
{
strFileName = dlg.FileName;
Workbook wb = new Workbook();
Worksheet ws2 = wb.Worksheets.Add("Sheet1");
WorksheetMergedCellsRegion region = null;
ws2.Rows[0].Cells[0].Value = strCaption;
ws2.Rows[0].Cells[0].CellFormat.Alignment = Infragistics.Excel.HorizontalCellAlignment.Center;
ws2.Rows[0].Cells[0].CellFormat.VerticalAlignment = Infragistics.Excel.VerticalCellAlignment.Center;
ws2.Rows[0].Cells[0].CellFormat.WrapText = Infragistics.Excel.ExcelDefaultableBoolean.True;
ws2.Rows[0].Cells[0].CellFormat.Font.Name = "宋体";
ws2.Rows[0].Cells[0].CellFormat.Font.Height = 350;
ws2.Rows[0].Cells[0].CellFormat.Font.Bold = ExcelDefaultableBoolean.True;
ws2.Rows[0].Height = 880;
int iMaxY = 0;
int iMaxHeight = 0;
int iMaxWidth = 0;
for (int i = 0; i < ugData.DisplayLayout.Bands[0].Columns.Count; i++)
{
if (!ugData.DisplayLayout.Bands[0].Columns[i].Hidden && ugData.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.LabelPosition != LabelPosition.None)
{
try
{
ws2.Rows[1 + ugData.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.OriginY].Cells[ugData.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.OriginX].Value = ugData.DisplayLayout.Bands[0].Columns[i].Header.Caption;
ws2.Rows[1 + ugData.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.OriginY].Cells[ugData.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.OriginX].CellFormat.Alignment = Infragistics.Excel.HorizontalCellAlignment.Center;
ws2.Rows[1 + ugData.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.OriginY].Cells[ugData.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.OriginX].CellFormat.VerticalAlignment = Infragistics.Excel.VerticalCellAlignment.Center;
ws2.Rows[1 + ugData.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.OriginY].Cells[ugData.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.OriginX].CellFormat.WrapText = Infragistics.Excel.ExcelDefaultableBoolean.True;
ws2.Rows[1 + ugData.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.OriginY].Cells[ugData.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.OriginX].CellFormat.Font.Bold = Infragistics.Excel.ExcelDefaultableBoolean.True;
ws2.Rows[1 + ugData.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.OriginY].Cells[ugData.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.OriginX].CellFormat.WrapText = Infragistics.Excel.ExcelDefaultableBoolean.True;
ws2.Rows[1 + ugData.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.OriginY].Cells[ugData.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.OriginX].CellFormat.Font.Name = "宋体";
region = ws2.MergedCellsRegions.Add(1 + ugData.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.OriginY,
ugData.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.OriginX,
1 + ugData.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.OriginY +
ugData.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.SpanY - 1,
ugData.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.OriginX +
ugData.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.SpanX - 1);
//region.CellFormat.FillPatternForegroundColor = Color.Lime;
//region.CellFormat.LeftBorderColor = region.CellFormat.RightBorderColor = region.CellFormat.TopBorderColor = region.CellFormat.BottomBorderColor = Color.DarkBlue;
if (ws2.Rows[1 + ugData.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.OriginY].Height != 500)
ws2.Rows[1 + ugData.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.OriginY].Height = 500;
if (ugData.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.SpanY > iMaxHeight)
{
iMaxHeight = ugData.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.SpanY;
}
if (ugData.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.OriginY > iMaxY)
{
iMaxY = ugData.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.OriginY;
iMaxHeight = iMaxY + ugData.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.SpanY;
}
if (ugData.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.SpanX + ugData.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.OriginX > iMaxWidth)
{
iMaxWidth = ugData.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.SpanX + ugData.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.OriginX;
}
}
catch (Exception ex) { string str = ex.Message; }
}
}
region = ws2.MergedCellsRegions.Add(0, 0, 0, iMaxWidth - 1);
//region.CellFormat.FillPatternForegroundColor = Color.Lime;
//region.CellFormat.LeftBorderColor = region.CellFormat.RightBorderColor = region.CellFormat.TopBorderColor = region.CellFormat.BottomBorderColor = Color.DarkBlue;
decimal dValue = 0.0M;
bool bDecimal = false;
for (int i = 0; i < ugData.Rows.Count; i++)
{
for (int j = 0; j < ugData.DisplayLayout.Bands[0].Columns.Count; j++)
{
try
{
if (!ugData.DisplayLayout.Bands[0].Columns[j].Hidden && ugData.DisplayLayout.Bands[0].Columns[j].RowLayoutColumnInfo.LabelPosition != LabelPosition.LabelOnly)
{
if (decimal.TryParse(Convert.ToString(ugData.Rows[i].Cells[j].Text), out dValue))
{
if (dValue == 0 || dValue < 1 || !Convert.ToString(ugData.Rows[i].Cells[j].Text).StartsWith("0"))
{
bDecimal = true;
}
else
{
bDecimal = false;
}
}
else
{
bDecimal = false;
}
if (bDecimal)
{
ws2.Rows[1 + iMaxHeight + i].Cells[ugData.DisplayLayout.Bands[0].Columns[j].RowLayoutColumnInfo.OriginX].Value = dValue;
}
else
{
ws2.Rows[1 + iMaxHeight + i].Cells[ugData.DisplayLayout.Bands[0].Columns[j].RowLayoutColumnInfo.OriginX].Value = ugData.Rows[i].Cells[j].Text;
}
//if (ws2.Rows[1 + iMaxHeight + i].Height != 320)
// ws2.Rows[1 + iMaxHeight + i].Height = 320;
//ws2.Rows[1 + iMaxHeight + i].Cells[ugData.DisplayLayout.Bands[0].Columns[j].RowLayoutColumnInfo.OriginX].CellFormat.VerticalAlignment = Infragistics.Excel.VerticalCellAlignment.Center;
//if (ugData.DisplayLayout.Bands[0].Columns[j].DataType == typeof(System.Decimal))
//{
// ws2.Rows[1 + iMaxHeight + i].Cells[ugData.DisplayLayout.Bands[0].Columns[j].RowLayoutColumnInfo.OriginX].CellFormat.Alignment = Infragistics.Excel.HorizontalCellAlignment.Right;
//}
//region = ws2.MergedCellsRegions.Add(1 + iMaxHeight + i, ugData.DisplayLayout.Bands[0].Columns[j].RowLayoutColumnInfo.OriginX,
// 1 + iMaxHeight + i, ugData.DisplayLayout.Bands[0].Columns[j].RowLayoutColumnInfo.OriginX);
//region.CellFormat.LeftBorderColor = region.CellFormat.RightBorderColor = region.CellFormat.TopBorderColor = region.CellFormat.BottomBorderColor = Color.DarkBlue;
}
}
catch { }
}
}
Infragistics.Excel.BIFF8Writer.WriteWorkbookToFile(wb, strFileName);
if (File.Exists(strFileName) &&
MessageBox.Show("数据导出成功!\r\n需要打开所导出文件吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
ProcessStartInfo p = new ProcessStartInfo(strFileName);
p.WorkingDirectory = Path.GetDirectoryName(strFileName);
Process.Start(p);
}
}
}
catch { }
}
public static void SaftRefreshUI(Control cl, Action action)
{
if (cl.InvokeRequired)
{
cl.Invoke(action);
}
else
{
action();
}
}
public static void ExportDataWithSaveDialog2(ref UltraGrid myGrid1, string strFileName)
{
try
{
if (myGrid1.Rows.Count == 0) return;
if (strFileName.Length == 0)
strFileName = "未命名";
SaveFileDialog dlg = new SaveFileDialog();
dlg.Title = "保存";
dlg.OverwritePrompt = true;
dlg.Filter = "Excel文件(*.xls)|*.xls";
dlg.AddExtension = true;
dlg.FileName = strFileName;
if (dlg.ShowDialog() == DialogResult.OK)
{
strFileName = dlg.FileName;
//ultraGridExcelExporter1.Export(myGrid1, strFileName);
if (MessageBox.Show("数据导出成功!\r\n需要打开所导出文件吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
ProcessStartInfo p = new ProcessStartInfo(strFileName);
p.WorkingDirectory = Path.GetDirectoryName(strFileName);
Process.Start(p);
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}