using System;
using System.Reflection;
using System.Collections;
using System.Resources;
using System.Windows.Forms;
using System.Data;
using System.Collections.Generic;
using Infragistics.Win.UltraWinGrid;
using System.Drawing;
using System.Text;
using Infragistics.Win;
namespace Core.StlMes.Client.Sale.SaleFundMgt.Util
{
public class UltraGridUtil
{
public static void InitUltraGridValueList(ref UltraGrid grid)
{
if (grid.DisplayLayout.Bands.Count == 0)
return;
UltraGridBand band = grid.DisplayLayout.Bands[0];
InitUltraGridValueList(ref band);
}
public static void InitUltraGridValueList(ref UltraGrid grid,int bandIndex)
{
if (grid.DisplayLayout.Bands.Count == 0)
return;
if (grid.DisplayLayout.Bands.Count < bandIndex)
return;
UltraGridBand band = grid.DisplayLayout.Bands[bandIndex];
InitUltraGridValueList(ref band);
}
public static void InitUltraGridValueList(ref UltraGridBand band)
{
}
#region 初始化Grid 标题和宽度
///
/// 初始化Grid 标题和宽度,需保证三个数组的长度是一致的
///
///
///
///
///
public static void SetGridHeaderAndWidth(ref UltraGrid grid, string[] columnName, string[] headerName, int[] columnWidht, out string strMsg)
{
strMsg = "";
// 参数检查
if (columnName == null || columnName.Length == 0
|| headerName == null || headerName.Length == 0
|| columnWidht == null || columnWidht.Length == 0)
{
strMsg = "输入参数错误";
return;
}
// 长度判断
if (columnName.Length != headerName.Length || columnName.Length != columnWidht.Length)
{
strMsg = "输入数组长度错误";
return;
}
if (grid.DisplayLayout.Bands == null || grid.DisplayLayout.Bands.Count == 0)
{
strMsg = "Grid 未绑定数据源";
return;
}
for (int i = 0; i < columnName.Length; i++)
{
try
{
grid.DisplayLayout.Bands[0].Columns[columnName[i]].Header.Caption = headerName[i];
grid.DisplayLayout.Bands[0].Columns[columnName[i]].Width = columnWidht[i];
}
catch
{
}
}
}
public static void SetGridHeaderAndWidth(ref UltraGridBand band, string[] columnName, string[] headerName, int[] columnWidht, out string strMsg)
{
strMsg = "";
// 参数检查
if (columnName == null || columnName.Length == 0
|| headerName == null || headerName.Length == 0
|| columnWidht == null || columnWidht.Length == 0)
{
strMsg = "输入参数错误";
return;
}
// 长度判断
if (columnName.Length != headerName.Length || columnName.Length != columnWidht.Length)
{
strMsg = "输入数组长度错误";
return;
}
if (band == null)
{
strMsg = "band null";
return;
}
for (int i = 0; i < columnName.Length; i++)
{
try
{
band.Columns[columnName[i]].Header.Caption = headerName[i];
band.Columns[columnName[i]].Width = columnWidht[i];
}
catch
{
}
}
}
public static void SetGridHeaderAndWidth(ref UltraGrid grid, string[] columnName, string[] headerName, out string strMsg)
{
strMsg = "";
// 参数检查
if (columnName == null || columnName.Length == 0
|| headerName == null || headerName.Length == 0
)
{
strMsg = "输入参数错误";
return;
}
// 长度判断
if (columnName.Length != headerName.Length)
{
strMsg = "输入数组长度错误";
return;
}
if (grid.DisplayLayout.Bands == null || grid.DisplayLayout.Bands.Count == 0)
{
strMsg = "Grid 未绑定数据源";
return;
}
for (int i = 0; i < columnName.Length; i++)
{
try
{
grid.DisplayLayout.Bands[0].Columns[columnName[i]].Header.Caption = headerName[i];
}
catch
{
}
}
}
public static void SetGridWidth(ref UltraGrid grid, int[] columnWidth, out string strMsg)
{
strMsg = "";
// 参数检查
if (columnWidth == null || columnWidth.Length == 0
)
{
strMsg = "输入参数错误";
return;
}
for (int i = 0; i < columnWidth.Length; i++)
{
try
{
grid.DisplayLayout.Bands[0].Columns[i].Width = columnWidth[i];
}
catch
{
}
}
}
///
///
///
///
/// 带列名称和宽度hs表
///
public static void SetGridWidth(ref UltraGrid grid, System.Collections.Hashtable hs)
{
try
{
if (hs == null)
return;
if (hs.Count == 0)
return;
foreach (string s in hs.Keys)
{
try
{
grid.DisplayLayout.Bands[0].Columns[s].Width = Convert.ToInt16(hs[s]);
}
catch
{
}
}
}
catch
{
}
}
public static void SetGridWidth(ref UltraGrid grid, int[] columnWidth)
{
string strMsg = "";
SetGridWidth(ref grid, columnWidth, out strMsg);
}
public static void SetGridColumnHidden(ref UltraGrid grid, string[] columnName)
{
if (columnName == null || columnName.Length == 0)
return;
if (grid.DisplayLayout.Bands.Count == 0)
return;
foreach (string s in columnName)
{
try
{
grid.DisplayLayout.Bands[0].Columns[s].Hidden = true;
}
catch
{
}
}
}
///
/// 隐藏指定列,isColumnNameHIddle 指定columnname作用,为
/// true 则是隐藏指定列,false 则是除columnname 列,其他都隐藏
///
///
///
///
public static void SetGridColumnHidden(ref UltraGrid grid, string[] columnName,Boolean isColumnNameHIddle)
{
if (isColumnNameHIddle)
{
SetGridColumnHidden(ref grid, columnName);
return;
}
if (columnName == null || columnName.Length == 0)
return;
if (grid.DisplayLayout.Bands.Count == 0)
return;
foreach (UltraGridColumn column in grid.DisplayLayout.Bands[0].Columns)
{
column.Hidden = true;
}
foreach (string s in columnName)
{
try
{
grid.DisplayLayout.Bands[0].Columns[s].Hidden = false;
}
catch
{
}
}
}
#endregion
#region 设置grid
///
/// 设置是否可以过滤
///
///
///
///
public static void SetGridRowFilter(ref UltraGrid ultGrid)
{
try
{
ultGrid.DisplayLayout.Bands[0].ColumnFilters.ClearAllFilters();
ultGrid.DisplayLayout.Override.AllowRowFiltering = Infragistics.Win.DefaultableBoolean.True;
}
catch { }
}
///
/// 设置是否允许列移动
///
///
///
public static void SetGridRowAllowColMoving(ref UltraGrid ultGrid, Boolean isAllowGroupBy)
{
try
{
if (isAllowGroupBy)
{
ultGrid.DisplayLayout.Override.AllowColMoving = AllowColMoving.WithinBand;
}
}
catch { }
}
///
///
///
///
///
public static void SetGridRowAllowColSwapping(ref UltraGrid ultGrid, Boolean isAllowColSwapping)
{
try
{
if (isAllowColSwapping)
{
ultGrid.DisplayLayout.Override.AllowColSwapping = AllowColSwapping.WithinBand;
}
else
ultGrid.DisplayLayout.Override.AllowColSwapping = AllowColSwapping.NotAllowed;
ultGrid.DisplayLayout.Override.AllowColSwapping = AllowColSwapping.WithinBand;
ultGrid.DisplayLayout.ViewStyleBand = ViewStyleBand.OutlookGroupBy;
}
catch { }
}
///
/// 设置分组
///
///
///
public static void SetGridRowAllowOutLookGroupBy(ref UltraGrid ultGrid, Boolean isOutLookGroupBy)
{
try
{
if (isOutLookGroupBy)
{
ultGrid.DisplayLayout.ViewStyleBand = ViewStyleBand.OutlookGroupBy;
}
}
catch { }
}
///
/// 设置grid,默认允许过滤,移动列等
///
///
public static void SetGridRowStyle(ref UltraGrid ultGrid)
{
SetGridRowFilter(ref ultGrid);
SetGridRowAllowColMoving(ref ultGrid, true);
SetGridRowAllowColSwapping(ref ultGrid, true);
SetGridRowAllowOutLookGroupBy(ref ultGrid, true);
}
///
/// 设置grid 样式,包括颜色,字体等等
///
///
public static void SetGridDefaultStyle(ref UltraGrid ugr)
{
try
{
Infragistics.Win.Appearance appearance35 = new Infragistics.Win.Appearance();
Infragistics.Win.Appearance appearance36 = new Infragistics.Win.Appearance();
Infragistics.Win.Appearance appearance37 = new Infragistics.Win.Appearance();
Infragistics.Win.Appearance appearance38 = new Infragistics.Win.Appearance();
Infragistics.Win.Appearance appearance39 = new Infragistics.Win.Appearance();
Infragistics.Win.Appearance appearance40 = new Infragistics.Win.Appearance();
Infragistics.Win.Appearance appearance41 = new Infragistics.Win.Appearance();
Infragistics.Win.Appearance appearance42 = new Infragistics.Win.Appearance();
Infragistics.Win.Appearance appearance43 = new Infragistics.Win.Appearance();
Infragistics.Win.Appearance appearance44 = new Infragistics.Win.Appearance();
Infragistics.Win.UltraWinGrid.UltraGridLayout ultraGridLayout3 = new Infragistics.Win.UltraWinGrid.UltraGridLayout();
Infragistics.Win.Appearance appearance45 = new Infragistics.Win.Appearance();
Infragistics.Win.Appearance appearance46 = new Infragistics.Win.Appearance();
Infragistics.Win.Appearance appearance47 = new Infragistics.Win.Appearance();
Infragistics.Win.Appearance appearance48 = new Infragistics.Win.Appearance();
Infragistics.Win.Appearance appearance49 = new Infragistics.Win.Appearance();
Infragistics.Win.Appearance appearance50 = new Infragistics.Win.Appearance();
Infragistics.Win.Appearance appearance51 = new Infragistics.Win.Appearance();
ugr.DisplayLayout.BorderStyle = Infragistics.Win.UIElementBorderStyle.None;
ugr.DisplayLayout.CaptionVisible = Infragistics.Win.DefaultableBoolean.False;
ugr.DisplayLayout.GroupByBox.Hidden = true;
ugr.DisplayLayout.GroupByBox.Prompt = "将要分组的列拖至该区域";
ugr.DisplayLayout.MaxColScrollRegions = 1;
ugr.DisplayLayout.MaxRowScrollRegions = 1;
appearance47.BackColor = System.Drawing.Color.Lavender;
ugr.DisplayLayout.Override.ActiveRowAppearance = appearance47;
ugr.DisplayLayout.Override.AllowUpdate = Infragistics.Win.DefaultableBoolean.False;
ugr.DisplayLayout.Override.GroupByRowDescriptionMask = "[caption]:[value] ([count]条记录)";
appearance48.BackColor = System.Drawing.Color.LightSteelBlue;
appearance48.TextHAlign = Infragistics.Win.HAlign.Center;
ugr.DisplayLayout.Override.HeaderAppearance = appearance48;
ugr.DisplayLayout.Override.HeaderClickAction = Infragistics.Win.UltraWinGrid.HeaderClickAction.SortMulti;
ugr.DisplayLayout.Override.HeaderStyle = Infragistics.Win.HeaderStyle.Standard;
ugr.DisplayLayout.Override.MinRowHeight = 21;
appearance49.BackColor = System.Drawing.Color.LightSteelBlue;
ugr.DisplayLayout.Override.RowSelectorAppearance = appearance49;
ugr.DisplayLayout.Override.RowSelectorHeaderStyle = Infragistics.Win.UltraWinGrid.RowSelectorHeaderStyle.SeparateElement;
ugr.DisplayLayout.Override.RowSelectorNumberStyle = Infragistics.Win.UltraWinGrid.RowSelectorNumberStyle.RowIndex;
ugr.DisplayLayout.Override.RowSelectors = Infragistics.Win.DefaultableBoolean.True;
appearance50.BackColor = System.Drawing.Color.Lavender;
appearance50.ForeColor = System.Drawing.Color.Black;
ugr.DisplayLayout.Override.SelectedRowAppearance = appearance50;
ugr.DisplayLayout.Override.SummaryFooterCaptionVisible = Infragistics.Win.DefaultableBoolean.False;
ugr.DisplayLayout.Override.SummaryFooterSpacingBefore = 0;
appearance51.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(220)))), ((int)(((byte)(255)))));
ugr.DisplayLayout.Override.SummaryValueAppearance = appearance51;
ugr.DisplayLayout.Override.WrapHeaderText = Infragistics.Win.DefaultableBoolean.True;
ugr.DisplayLayout.ScrollBounds = Infragistics.Win.UltraWinGrid.ScrollBounds.ScrollToFill;
ugr.DisplayLayout.ScrollStyle = Infragistics.Win.UltraWinGrid.ScrollStyle.Immediate;
ugr.DisplayLayout.ViewStyleBand = Infragistics.Win.UltraWinGrid.ViewStyleBand.OutlookGroupBy;
ugr.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
ugr.Location = new System.Drawing.Point(0, 69);
ugr.Name = "";
ugr.Size = new System.Drawing.Size(1140, 360);
ugr.TabIndex = 65;
ugr.Tag = "";
ugr.Text = "";
SetGridRowStyle(ref ugr);
}
catch
{
}
}
///
/// 设置grid 样式,默认过滤,拖动,统一样色等
///
///
public static void SetGridOverrideStyle(ref UltraGrid ultGrid)
{
SetGridDefaultStyle(ref ultGrid);
SetGridRowStyle(ref ultGrid);
}
#endregion
#region 设置grid 的sum 值
///
/// 设置grid 的sum 值
///
/// grid
/// 待设置列名
public static void SetStaticsInfoSum(ref UltraGrid ultraGrid, ArrayList alistColumns, bool isClearExists)
{
try
{
if (alistColumns == null)
{
return;
}
UltraGridBand band = ultraGrid.DisplayLayout.Bands[0];
if (isClearExists)
{
band.Summaries.Clear();
}
SummarySettings summary = null;
UltraGridColumn cl = null;
foreach (UltraGridColumn column in ultraGrid.DisplayLayout.Bands[0].Columns)
{
if (column.RowLayoutColumnInfo.OriginX == 0)
{
cl = column;
break;
}
}
if (cl == null)
cl = ultraGrid.DisplayLayout.Bands[0].Columns[0];
summary = band.Summaries.Add(SummaryType.Count, cl);
summary.SummaryDisplayArea = SummaryDisplayAreas.BottomFixed;
summary.SummaryPosition = SummaryPosition.UseSummaryPositionColumn;
summary.DisplayFormat = "合计:";
summary.Appearance.TextHAlign = Infragistics.Win.HAlign.Center;
summary.Appearance.TextVAlign = Infragistics.Win.VAlign.Middle;
summary.Appearance.FontData.Bold = DefaultableBoolean.True;
string strFormat = " {0:############0.00}";
for (int i = 0; i < alistColumns.Count; i++)
{
try
{
summary = band.Summaries.Add(SummaryType.Sum, band.Columns[alistColumns[i].ToString()]);
summary.SummaryDisplayArea = SummaryDisplayAreas.BottomFixed;
summary.SummaryPosition = SummaryPosition.UseSummaryPositionColumn;
summary.DisplayFormat = strFormat;
summary.Appearance.TextHAlign = Infragistics.Win.HAlign.Right;
summary.Appearance.TextVAlign = Infragistics.Win.VAlign.Middle;
summary.Appearance.FontData.Bold = DefaultableBoolean.True;
summary.Appearance.ForeColor = Color.DarkBlue;
summary.Appearance.BackColor = Color.White;
}
catch { }
}
band.Override.SummaryFooterCaptionVisible = Infragistics.Win.DefaultableBoolean.False;
}
catch (Exception ex) { }
}
public static void SetStaticsInfoSum(ref UltraGrid ultraGrid, string[] alistColumns, bool isClearExists)
{
try
{
if (alistColumns == null)
{
return;
}
ArrayList list = new ArrayList();
foreach (string s in alistColumns)
{
if (!list.Contains(s))
{
list.Add(s);
}
}
SetStaticsInfoSum(ref ultraGrid, list, isClearExists);
}
catch (Exception ex) { }
}
#endregion
#region 设置Grid平均值
///
/// 设置grid平均值
///
/// grid
/// 要设置的列名
/// 是否清除统计
/// 显示格式
public static void SetStaticsInfoAvg(ref UltraGrid ultraGrid, ArrayList alistColumns, bool clearExists, ArrayList alistFormat)
{
try
{
if (alistColumns == null)
{
return;
}
UltraGridBand band = ultraGrid.DisplayLayout.Bands[0];
if (clearExists)
band.Summaries.Clear();
SummarySettings summary = null;
UltraGridColumn cl = null;
foreach (UltraGridColumn column in ultraGrid.DisplayLayout.Bands[0].Columns)
{
if (column.RowLayoutColumnInfo.OriginX == 0)
{
cl = column;
break;
}
}
if (cl == null)
cl = ultraGrid.DisplayLayout.Bands[0].Columns[0];
summary = band.Summaries.Add(SummaryType.Count, cl);
summary.SummaryDisplayArea = SummaryDisplayAreas.BottomFixed;
summary.SummaryPosition = SummaryPosition.UseSummaryPositionColumn;
summary.DisplayFormat = "平均:";
summary.Appearance.TextHAlign = Infragistics.Win.HAlign.Center;
summary.Appearance.TextVAlign = Infragistics.Win.VAlign.Middle;
summary.Appearance.FontData.Bold = DefaultableBoolean.True;
string strFormat = "";
for (int i = 0; i < alistColumns.Count; i++)
{
try
{
try
{
strFormat = alistFormat[i].ToString();
}
catch
{
strFormat = " {0:############0.00}";
}
summary = band.Summaries.Add(SummaryType.Average, band.Columns[alistColumns[i].ToString()]);
summary.SummaryDisplayArea = SummaryDisplayAreas.BottomFixed;
summary.SummaryPosition = SummaryPosition.UseSummaryPositionColumn;
summary.DisplayFormat = strFormat;
summary.Appearance.TextHAlign = Infragistics.Win.HAlign.Right;
summary.Appearance.TextVAlign = Infragistics.Win.VAlign.Middle;
summary.Appearance.FontData.Bold = DefaultableBoolean.True;
summary.Appearance.ForeColor = Color.DarkBlue;
summary.Appearance.BackColor = Color.White;
}
catch { }
}
band.Override.SummaryFooterCaptionVisible = Infragistics.Win.DefaultableBoolean.False;
}
catch { }
}
public static void SetStaticsInfoAvg(ref UltraGrid ultraGrid, ArrayList alistColumns, bool clearExists)
{
try
{
if (alistColumns == null)
{
return;
}
UltraGridBand band = ultraGrid.DisplayLayout.Bands[0];
if (clearExists)
band.Summaries.Clear();
SummarySettings summary = null;
UltraGridColumn cl = null;
foreach (UltraGridColumn column in ultraGrid.DisplayLayout.Bands[0].Columns)
{
if (column.RowLayoutColumnInfo.OriginX == 0)
{
cl = column;
break;
}
}
if (cl == null)
cl = ultraGrid.DisplayLayout.Bands[0].Columns[0];
summary = band.Summaries.Add(SummaryType.Count, cl);
summary.SummaryDisplayArea = SummaryDisplayAreas.BottomFixed;
summary.SummaryPosition = SummaryPosition.UseSummaryPositionColumn;
summary.DisplayFormat = "平均:";
summary.Appearance.TextHAlign = Infragistics.Win.HAlign.Center;
summary.Appearance.TextVAlign = Infragistics.Win.VAlign.Middle;
summary.Appearance.FontData.Bold = DefaultableBoolean.True;
string strFormat = "";
for (int i = 0; i < alistColumns.Count; i++)
{
try
{
strFormat = " {0:############0.00}";
summary = band.Summaries.Add(SummaryType.Average, band.Columns[alistColumns[i].ToString()]);
summary.SummaryDisplayArea = SummaryDisplayAreas.BottomFixed;
summary.SummaryPosition = SummaryPosition.UseSummaryPositionColumn;
summary.DisplayFormat = strFormat;
summary.Appearance.TextHAlign = Infragistics.Win.HAlign.Right;
summary.Appearance.TextVAlign = Infragistics.Win.VAlign.Middle;
summary.Appearance.FontData.Bold = DefaultableBoolean.True;
summary.Appearance.ForeColor = Color.DarkBlue;
summary.Appearance.BackColor = Color.White;
}
catch { }
}
band.Override.SummaryFooterCaptionVisible = Infragistics.Win.DefaultableBoolean.False;
}
catch { }
}
public static void SetStaticsInfoAvg(ref UltraGrid ultraGrid, string[] alistColumns, bool clearExists)
{
try
{
if (alistColumns == null || alistColumns.Length == 0)
{
return;
}
ArrayList list = new ArrayList();
foreach (string s in alistColumns)
{
list.Add(s);
}
SetStaticsInfoAvg(ref ultraGrid, list, clearExists);
}
catch
{
}
}
#endregion
#region 导出excel
///
/// 导出excel,带导出文件名
///
///
///
public static void ExportGridDataToExcel(string fileName, UltraGrid grid)
{
try
{
Infragistics.Win.UltraWinGrid.ExcelExport.UltraGridExcelExporter ex = new Infragistics.Win.UltraWinGrid.ExcelExport.UltraGridExcelExporter();
string strFileName = @"c:\" + fileName + System.DateTime.Today.ToString("yyMMdd") + ".xls";
if (CommonExportExcel(ref strFileName))
ex.Export(grid, strFileName);
}
catch
{
}
}
private static bool CommonExportExcel(ref string strFileName)
{
System.Windows.Forms.SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "Microsoft Office Excel 工作簿 (*.xls)|*.xls";
sfd.Title = "导出到Excel文件";
sfd.FileName = strFileName;
if (sfd.ShowDialog() == DialogResult.OK)
{
strFileName = sfd.FileName;
return sfd.FileName != "";
}
return false;
}
///
/// 不带文件名导出
///
///
public static void ExportGridDataToExcel(UltraGrid grid)
{
ExportGridDataToExcel("", grid);
}
#endregion
}
}