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 } }