using DevExpress.Utils; using DevExpress.XtraGrid.Columns; using DevExpress.XtraGrid.Views.Grid; using DevExpress.XtraGrid.Views.Grid.ViewInfo; using System.ComponentModel; namespace Verify { /// /// GridView的拓展类 /// public static class GridViewExtend { #region 默认 /// /// 普通视图设置 /// /// /// public static void SetNormalView(this GridView grid, int height = 35) { grid.OptionsFind.FindNullPrompt = "检索"; grid.OptionsSelection.MultiSelect = false; grid.OptionsMenu.EnableColumnMenu = true; grid.OptionsSelection.EnableAppearanceFocusedCell = false; grid.Appearance.HeaderPanel.TextOptions.HAlignment = HorzAlignment.Center; grid.Appearance.Row.TextOptions.HAlignment = HorzAlignment.Center; grid.FocusRectStyle = DrawFocusRectStyle.RowFullFocus; grid.OptionsCustomization.AllowFilter = false; grid.OptionsCustomization.AllowSort = true; grid.OptionsCustomization.AllowQuickHideColumns = false; grid.OptionsView.ShowAutoFilterRow = false; grid.OptionsView.ShowFilterPanelMode = DevExpress.XtraGrid.Views.Base.ShowFilterPanelMode.Never; grid.OptionsView.ShowIndicator = false; grid.OptionsView.NewItemRowPosition = NewItemRowPosition.None; grid.OptionsView.ShowGroupPanel = false; grid.OptionsView.ShowDetailButtons = false; grid.OptionsClipboard.AllowCopy = DefaultBoolean.True; grid.OptionsBehavior.Editable = false; grid.OptionsBehavior.ReadOnly = true; //grid.OptionsView.EnableAppearanceOddRow = true; // 使能 // 和和上面绑定 同时使用有效 //grid.Appearance.EvenRow.BackColor = Color.FromArgb(244, 248, 251); // 设置偶数行颜色 //grid.OptionsView.EnableAppearanceEvenRow = true; //grid.Appearance.OddRow.BackColor = Color.White; // 设置偶数行颜色 grid.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder; grid.OptionsFind.ShowCloseButton = false; grid.RowHeight = height; grid.BestFitColumns(); } /// /// 限制功能的视图 /// /// /// public static void SetLimitView(this GridView grid, int height = 35) { grid.OptionsFind.FindNullPrompt = "检索"; grid.OptionsSelection.MultiSelect = false; grid.OptionsMenu.EnableColumnMenu = false; grid.OptionsSelection.EnableAppearanceFocusedCell = false; grid.Appearance.HeaderPanel.TextOptions.HAlignment = HorzAlignment.Center; grid.Appearance.Row.TextOptions.HAlignment = HorzAlignment.Center; grid.FocusRectStyle = DrawFocusRectStyle.RowFullFocus; grid.OptionsCustomization.AllowFilter = false; grid.OptionsCustomization.AllowSort = false; grid.OptionsCustomization.AllowQuickHideColumns = false; grid.OptionsView.ShowAutoFilterRow = false; grid.OptionsView.ShowFilterPanelMode = DevExpress.XtraGrid.Views.Base.ShowFilterPanelMode.Never; grid.OptionsView.NewItemRowPosition = NewItemRowPosition.None; grid.OptionsView.ShowGroupPanel = false; grid.OptionsClipboard.AllowCopy = DefaultBoolean.True; grid.OptionsBehavior.Editable = false; grid.OptionsBehavior.ReadOnly = true; grid.OptionsView.EnableAppearanceOddRow = true; // 使能 // 和和上面绑定 同时使用有效 grid.Appearance.EvenRow.BackColor = Color.FromArgb(244, 248, 251); // 设置偶数行颜色 grid.OptionsView.EnableAppearanceEvenRow = true; grid.Appearance.OddRow.BackColor = Color.White; // 设置偶数行颜色 grid.RowHeight = height; grid.ColumnPanelRowHeight = height; grid.GroupRowHeight = height; grid.BestFitColumns(); } /// /// 普通编辑视图设置 /// /// /// public static void SetNormalEditView(this GridView grid, int height = 35) { grid.OptionsFind.FindNullPrompt = "检索"; grid.OptionsSelection.MultiSelect = false; grid.OptionsMenu.EnableColumnMenu = true; grid.OptionsSelection.EnableAppearanceFocusedCell = false; grid.Appearance.HeaderPanel.TextOptions.HAlignment = HorzAlignment.Center; grid.Appearance.Row.TextOptions.HAlignment = HorzAlignment.Center; grid.FocusRectStyle = DrawFocusRectStyle.RowFullFocus; grid.OptionsCustomization.AllowFilter = true; grid.OptionsCustomization.AllowSort = true; grid.OptionsCustomization.AllowQuickHideColumns = false; grid.OptionsView.ShowAutoFilterRow = false; grid.OptionsView.ShowFilterPanelMode = DevExpress.XtraGrid.Views.Base.ShowFilterPanelMode.Never; grid.OptionsView.NewItemRowPosition = NewItemRowPosition.None; grid.OptionsView.ShowGroupPanel = false; grid.OptionsClipboard.AllowCopy = DefaultBoolean.True; grid.OptionsBehavior.Editable = true; grid.OptionsBehavior.ReadOnly = false; /*grid.OptionsView.EnableAppearanceOddRow = true; grid.OptionsView.EnableAppearanceEvenRow = true; grid.Appearance.OddRow.BackColor = Color.White; grid.Appearance.EvenRow.BackColor = Color.FromArgb(244, 248, 251);*/ grid.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder; grid.RowHeight = height; grid.ColumnPanelRowHeight = height; grid.GroupRowHeight = height; grid.BestFitColumns(); grid.OptionsFilter.AllowFilterEditor = false; grid.OptionsFind.ShowCloseButton = false; grid.OptionsCustomization.AllowSort = false; grid.OptionsCustomization.AllowFilter = false; } /// /// 限制功能的编辑视图 /// /// /// public static void SetLimitEditView(this GridView grid, int height = 35) { grid.OptionsFind.FindNullPrompt = "检索"; grid.OptionsSelection.MultiSelect = false; grid.OptionsMenu.EnableColumnMenu = false; grid.OptionsSelection.EnableAppearanceFocusedCell = false; grid.Appearance.HeaderPanel.TextOptions.HAlignment = HorzAlignment.Center; grid.Appearance.Row.TextOptions.HAlignment = HorzAlignment.Center; grid.FocusRectStyle = DrawFocusRectStyle.RowFullFocus; grid.OptionsCustomization.AllowFilter = false; grid.OptionsCustomization.AllowSort = false; grid.OptionsCustomization.AllowQuickHideColumns = false; grid.OptionsView.ShowAutoFilterRow = false; grid.OptionsView.ShowFilterPanelMode = DevExpress.XtraGrid.Views.Base.ShowFilterPanelMode.Never; grid.OptionsView.NewItemRowPosition = NewItemRowPosition.None; grid.OptionsView.ShowGroupPanel = false; grid.OptionsClipboard.AllowCopy = DefaultBoolean.True; grid.OptionsBehavior.Editable = true; grid.OptionsBehavior.ReadOnly = false; grid.OptionsView.EnableAppearanceOddRow = true; // 使能 // 和和上面绑定 同时使用有效 grid.Appearance.EvenRow.BackColor = Color.FromArgb(244, 248, 251); // 设置偶数行颜色 grid.OptionsView.EnableAppearanceEvenRow = true; grid.Appearance.OddRow.BackColor = Color.White; // 设置偶数行颜色 grid.RowHeight = height; grid.ColumnPanelRowHeight = height; grid.GroupRowHeight = height; grid.BestFitColumns(); } /// /// 绑定普通编辑视图设置 /// /// /// public static void SetBindingNormalEditView(this GridView grid, int height = 35) { grid.OptionsFind.FindNullPrompt = "检索"; grid.OptionsSelection.MultiSelect = false; grid.OptionsMenu.EnableColumnMenu = true; grid.OptionsSelection.EnableAppearanceFocusedCell = false; grid.Appearance.HeaderPanel.TextOptions.HAlignment = HorzAlignment.Center; grid.Appearance.Row.TextOptions.HAlignment = HorzAlignment.Center; grid.FocusRectStyle = DrawFocusRectStyle.RowFullFocus; grid.OptionsCustomization.AllowFilter = true; grid.OptionsCustomization.AllowSort = true; grid.OptionsCustomization.AllowQuickHideColumns = false; grid.OptionsView.ShowAutoFilterRow = false; grid.OptionsView.ShowFilterPanelMode = DevExpress.XtraGrid.Views.Base.ShowFilterPanelMode.Never; grid.OptionsView.NewItemRowPosition = NewItemRowPosition.Bottom; grid.OptionsView.ShowGroupPanel = false; grid.OptionsClipboard.AllowCopy = DefaultBoolean.True; grid.OptionsBehavior.Editable = true; grid.OptionsBehavior.ReadOnly = false; grid.RowHeight = height; grid.ColumnPanelRowHeight = height; grid.GroupRowHeight = height; grid.BestFitColumns(); } /// /// 绑定限制编辑视图设置 /// /// /// public static void SetBindingLimitEditView(this GridView grid, int height = 35) { grid.OptionsFind.FindNullPrompt = "检索"; grid.OptionsSelection.MultiSelect = false; grid.OptionsMenu.EnableColumnMenu = false; grid.OptionsSelection.EnableAppearanceFocusedCell = false; grid.Appearance.HeaderPanel.TextOptions.HAlignment = HorzAlignment.Center; grid.Appearance.Row.TextOptions.HAlignment = HorzAlignment.Center; grid.FocusRectStyle = DrawFocusRectStyle.RowFullFocus; grid.OptionsCustomization.AllowFilter = false; grid.OptionsCustomization.AllowSort = false; grid.OptionsCustomization.AllowQuickHideColumns = false; grid.OptionsView.ShowAutoFilterRow = false; grid.OptionsView.ShowFilterPanelMode = DevExpress.XtraGrid.Views.Base.ShowFilterPanelMode.Never; grid.OptionsView.NewItemRowPosition = NewItemRowPosition.Bottom; grid.OptionsView.ShowGroupPanel = false; grid.OptionsClipboard.AllowCopy = DefaultBoolean.True; grid.OptionsBehavior.Editable = true; grid.OptionsBehavior.ReadOnly = false; grid.RowHeight = height; grid.ColumnPanelRowHeight = height; grid.GroupRowHeight = height; grid.BestFitColumns(); } /// /// 显示ViewCaption /// /// /// public static void ShowViewCaption(this GridView grid, int height = 35) { grid.OptionsView.ShowViewCaption = true; grid.ViewCaptionHeight = height; grid.Appearance.ViewCaption.TextOptions.HAlignment = HorzAlignment.Near; } /// /// GridView注册显示行标 /// /// public static void RegistCustomDrawRowIndicator(this GridView grid, int IndicatorWidth = 35) { grid.OptionsView.ShowIndicator = true; grid.IndicatorWidth = IndicatorWidth; grid.CustomDrawRowIndicator += (sender, e) => { if (e.Info.IsRowIndicator && e.RowHandle >= 0) { e.Info.DisplayText = (e.RowHandle + 1).ToString().Trim(); e.Appearance.TextOptions.HAlignment = HorzAlignment.Far; } }; } /// /// 注册自定义组名 /// /// /// /// public static void RegistCustomGroupRow(this GridView grid, GridColumn col, Func func) { grid.CustomDrawGroupRow += (sender, e) => { var gridGroupRowInfo = e.Info as GridGroupRowInfo; if (gridGroupRowInfo.Column == col) { var index = grid.GetDataRowHandleByGroupRowHandle(e.RowHandle); var row = grid.GetRow(index); if (row == null) return; gridGroupRowInfo.GroupText = func(row); } }; } /// /// 自定义单元格样式 /// /// /// /// public static void RegistCustomDrawCell(this GridView grid, Color? bgColor = null, Color? foreColor = null) { if (bgColor == null) bgColor = Color.FromArgb(0, 122, 204); if (foreColor == null) foreColor = Color.White; grid.CustomDrawCell += (sender, e) => { if (e.RowHandle == (sender as GridView).FocusedRowHandle) { var cell = e.Cell as GridCellInfo; if (!cell.IsMerged) { e.Appearance.BackColor = bgColor.Value; e.Appearance.ForeColor = foreColor.Value; } } }; } /// /// 获取当前数据行 /// public static T GetCurrentViewModel(this GridView grid, List source) where T : class { if (source == null) return default; if (source.Count < 1) { return default; } var row = grid.GetFocusedRow() as T; if (row == null) { return null; } return row; } /// /// 获取当前数据行 /// public static T GetCurrentViewModel(this GridView grid, BindingList source) where T : class { if (source == null) return default; if (source.Count < 1) { return default; } var row = grid.GetFocusedRow() as T; if (row == null) { return null; } return row; } #endregion /// /// 绑定按列分组视图设置 Nsx_20210729 /// /// /// /// public static void SetGroupView(this GridView grid, GridColumn col, int height = 35) { grid.GroupCount = 1; grid.RowHeight = height; grid.GroupRowHeight = height; grid.ColumnPanelRowHeight = height; grid.OptionsBehavior.ReadOnly = true; grid.OptionsBehavior.Editable = false; grid.OptionsView.ShowDetailButtons = false; grid.OptionsCustomization.AllowQuickHideColumns = false; grid.OptionsView.ShowAutoFilterRow = false; grid.OptionsView.NewItemRowPosition = NewItemRowPosition.None; grid.OptionsClipboard.AllowCopy = DefaultBoolean.True; grid.OptionsSelection.EnableAppearanceFocusedCell = false; grid.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder; grid.FocusRectStyle = DrawFocusRectStyle.RowFullFocus; grid.Appearance.Row.TextOptions.HAlignment = HorzAlignment.Center; grid.Appearance.HeaderPanel.TextOptions.HAlignment = HorzAlignment.Center; grid.OptionsBehavior.AllowFixedGroups = DefaultBoolean.True; grid.OptionsBehavior.AllowPixelScrolling = DefaultBoolean.True; grid.OptionsClipboard.ClipboardMode = DevExpress.Export.ClipboardMode.Formatted; grid.OptionsBehavior.AutoExpandAllGroups = true; grid.OptionsFind.AlwaysVisible = false; grid.OptionsPrint.PrintHorzLines = false; grid.OptionsPrint.PrintPreview = true; grid.OptionsPrint.PrintVertLines = false; grid.OptionsView.GroupDrawMode = GroupDrawMode.Office; grid.OptionsView.ShowGroupedColumns = true; grid.OptionsView.ShowGroupPanel = false; grid.OptionsView.ShowIndicator = false; grid.OptionsView.ShowVerticalLines = DefaultBoolean.False; grid.PreviewFieldName = "PlainText"; grid.SortInfo.AddRange(new GridColumnSortInfo[] { new GridColumnSortInfo(col, DevExpress.Data.ColumnSortOrder.None)}); grid.BestFitColumns(); } ///// ///// 导出Excel ///// //public static void ExportExcel(this GridView grid) //{ // var path = ExcelSaveFilePathHelper.SaveFilePathName(); // if (string.IsNullOrEmpty(path)) return; // grid.OptionsPrint.PrintDetails = true;//导出明细 // grid.OptionsPrint.ExpandAllDetails = true;//导出所有明细,false的话,只会导出展开的明细 // grid.ExportToXlsx(path, new DevExpress.XtraPrinting.XlsxExportOptionsEx() { ExportType = DevExpress.Export.ExportType.WYSIWYG, TextExportMode = DevExpress.XtraPrinting.TextExportMode.Text }); // DialogResult dr = XtraMessageBox.Show("导出成功!是否打开刚刚保存的Excel文件?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); // if (dr != DialogResult.OK) // return; // System.Diagnostics.Process.Start(path); //} /* /// /// 导出Excel /// public static void ExportExcel(this GridView grid, DocumentPage page, string pageOperateInfo) { page.ShowCmdOperateInfo("导出列表信息到Excel"); var path = ExcelSaveFilePathHelper.SaveFilePathName(); page.ShowCmdOperateInfo(pageOperateInfo); if (string.IsNullOrEmpty(path)) return; grid.OptionsPrint.PrintDetails = true;//导出明细 grid.OptionsPrint.ExpandAllDetails = true;//导出所有明细,false的话,只会导出展开的明细 grid.ExportToXlsx(path, new DevExpress.XtraPrinting.XlsxExportOptionsEx() { ExportType = DevExpress.Export.ExportType.WYSIWYG, TextExportMode = DevExpress.XtraPrinting.TextExportMode.Text }); DialogResult dr = XtraMessageBox.Show("导出成功!是否打开刚刚保存的Excel文件?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); if (dr != DialogResult.OK) return; System.Diagnostics.Process.Start(path); }*/ /// /// 主表视图颜色样式设置 /// /// public static void SetGridMianViewColor(this GridView grid) { var focusRowColor = Color.LightBlue;// Color.FromName(Skin.FocusRowColor); //聚焦 grid.Appearance.FocusedRow.Options.UseBackColor = true; grid.Appearance.FocusedRow.BackColor = focusRowColor; grid.Appearance.FocusedCell.Options.UseBackColor = true; grid.Appearance.FocusedCell.BackColor = focusRowColor; //奇偶行颜色 grid.OptionsView.EnableAppearanceOddRow = true; grid.Appearance.OddRow.Options.UseBackColor = true; grid.Appearance.OddRow.BackColor = Color.FromName(Skin.OddRowColor); // 设置奇数行颜色 grid.OptionsView.EnableAppearanceEvenRow = true; grid.Appearance.EvenRow.Options.UseBackColor = true; grid.Appearance.EvenRow.BackColor = Color.FromName(Skin.EvenRowColor); // 设置偶数行颜色 } /// /// 从表视图颜色样式设置 /// /// public static void SetGridSubViewColor(this GridView grid) { //聚焦 grid.Appearance.FocusedRow.Options.UseBackColor = true; grid.Appearance.FocusedRow.BackColor = Color.FromName(Skin.FocusRowColor); grid.Appearance.FocusedCell.Options.UseBackColor = true; grid.Appearance.FocusedCell.BackColor = Color.FromName(Skin.FocusRowColor); } /// /// 普通编辑视图设置 /// /// /// public static void SetDefaultEditView(this GridView grid, int height = 35) { grid.OptionsFind.FindNullPrompt = "检索"; grid.OptionsSelection.MultiSelect = false; grid.OptionsMenu.EnableColumnMenu = true; grid.OptionsSelection.EnableAppearanceFocusedCell = false; grid.Appearance.HeaderPanel.TextOptions.HAlignment = HorzAlignment.Center; grid.Appearance.Row.TextOptions.HAlignment = HorzAlignment.Center; grid.FocusRectStyle = DrawFocusRectStyle.RowFullFocus; grid.OptionsCustomization.AllowFilter = true; grid.OptionsCustomization.AllowSort = true; grid.OptionsCustomization.AllowQuickHideColumns = false; grid.OptionsView.ShowAutoFilterRow = false; grid.OptionsView.ShowFilterPanelMode = DevExpress.XtraGrid.Views.Base.ShowFilterPanelMode.Never; grid.OptionsView.NewItemRowPosition = NewItemRowPosition.None; grid.OptionsView.ShowGroupPanel = false; grid.OptionsClipboard.AllowCopy = DefaultBoolean.True; grid.OptionsBehavior.Editable = true; grid.OptionsBehavior.ReadOnly = false; grid.OptionsView.EnableAppearanceOddRow = true; grid.OptionsView.EnableAppearanceEvenRow = true; grid.Appearance.OddRow.BackColor = Color.White; grid.Appearance.EvenRow.BackColor = Color.FromArgb(244, 248, 251); grid.RowHeight = height; grid.ColumnPanelRowHeight = height; grid.GroupRowHeight = height; grid.BestFitColumns(); } public class Skin { public static string ThemeStyle { get; set; } = "The Bezier"; public static string Style { get; set; } = "Office Colorful"; public string MainFromColor { get; set; } = "#0070C0"; public string ConfirmButtonColor { get; set; } = "#2960A4"; public string CancelButtonColor { get; set; } = "#F07409"; public string StartButtonColor { get; set; } = "#8DB3E2"; public static string FocusRowColor { get; set; } = "#7292CD"; public static string OddRowColor { get; set; } = "#D8D8D8"; public static string EvenRowColor { get; set; } = "#FFFFFF"; } /// /// 设置拖拽状态下的普通视图 /// public static void SetDragNormalView(this GridView rhs, int height = 35) where t : class { rhs.SetNormalView(height); GridHitInfo downHitInfo = null; rhs.MouseDown += (sender, e) => { var view = sender as GridView; downHitInfo = null; if (view != null) { GridHitInfo hitInfo = view.CalcHitInfo(new Point(e.X, e.Y)); if (e.Button == MouseButtons.Left && hitInfo.InRow && hitInfo.HitTest != GridHitTest.RowIndicator) { downHitInfo = hitInfo; } } }; rhs.MouseMove += (sender, e) => { var view = sender as GridView; if (e.Button == MouseButtons.Left && downHitInfo != null) { Size dragSize = SystemInformation.DragSize; Rectangle dragRect = new Rectangle(new Point(downHitInfo.HitPoint.X - dragSize.Width / 2, downHitInfo.HitPoint.Y - dragSize.Height / 2), dragSize); if (!dragRect.Contains(new Point(e.X, e.Y))) { if (view != null) { var dragVm = view.GetSelectedRows().Select(rownum => view.GetRow(rownum) as t).FirstOrDefault(); if (dragVm != null) { view.GridControl.DoDragDrop(dragVm, DragDropEffects.Move); } } downHitInfo = null; DXMouseEventArgs.GetMouseArgs(e).Handled = true; } } }; } } }