using DevExpress.Utils; using DevExpress.XtraEditors; using DevExpress.XtraGrid.Columns; using DevExpress.XtraGrid.Views.Grid; using DevExpress.XtraGrid.Views.Grid.ViewInfo; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace IStation.WinFormUI { /// /// GridView的拓展类 /// public static class GridViewExtend { #region 默认 /// /// 普通视图设置 /// /// /// public static void SetNormalView(this GridView grid, int height = 25) { grid.OptionsFind.FindNullPrompt = "检索"; grid.OptionsSelection.MultiSelect = false; grid.OptionsMenu.EnableColumnMenu = true; grid.OptionsView.EnableAppearanceEvenRow = true; grid.OptionsView.EnableAppearanceOddRow = true; grid.OptionsSelection.EnableAppearanceFocusedCell = false; grid.Appearance.HeaderPanel.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; grid.Appearance.Row.TextOptions.HAlignment = DevExpress.Utils.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.ShowIndicator = true; 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.RowHeight = height; grid.ColumnPanelRowHeight = height; grid.GroupRowHeight = height; grid.BestFitColumns(); } /// /// 限制功能的视图 /// /// /// public static void SetLimitView(this GridView grid, int height = 25) { grid.OptionsFind.FindNullPrompt = "检索"; grid.OptionsSelection.MultiSelect = false; grid.OptionsMenu.EnableColumnMenu = false; grid.OptionsView.EnableAppearanceEvenRow = true; grid.OptionsView.EnableAppearanceOddRow = true; grid.OptionsSelection.EnableAppearanceFocusedCell = false; grid.Appearance.HeaderPanel.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; grid.Appearance.Row.TextOptions.HAlignment = DevExpress.Utils.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.RowHeight = height; grid.ColumnPanelRowHeight = height; grid.GroupRowHeight = height; grid.BestFitColumns(); } /// /// 普通编辑视图设置 /// /// /// public static void SetNormalEditView(this GridView grid, int height = 25) { grid.OptionsFind.FindNullPrompt = "检索"; grid.OptionsSelection.MultiSelect = false; grid.OptionsMenu.EnableColumnMenu = true; grid.OptionsView.EnableAppearanceEvenRow = true; grid.OptionsView.EnableAppearanceOddRow = true; grid.OptionsSelection.EnableAppearanceFocusedCell = false; grid.Appearance.HeaderPanel.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; grid.Appearance.Row.TextOptions.HAlignment = DevExpress.Utils.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.RowHeight = height; grid.ColumnPanelRowHeight = height; grid.GroupRowHeight = height; grid.BestFitColumns(); } /// /// 限制功能的编辑视图 /// /// /// public static void SetLimitEditView(this GridView grid, int height = 25) { grid.OptionsFind.FindNullPrompt = "检索"; grid.OptionsSelection.MultiSelect = false; grid.OptionsMenu.EnableColumnMenu = false; grid.OptionsView.EnableAppearanceEvenRow = true; grid.OptionsView.EnableAppearanceOddRow = true; grid.OptionsSelection.EnableAppearanceFocusedCell = false; grid.Appearance.HeaderPanel.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; grid.Appearance.Row.TextOptions.HAlignment = DevExpress.Utils.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.RowHeight = height; grid.ColumnPanelRowHeight = height; grid.GroupRowHeight = height; grid.BestFitColumns(); } /// /// 绑定普通编辑视图设置 /// /// /// public static void SetBindingNormalEditView(this GridView grid, int height = 25) { grid.OptionsFind.FindNullPrompt = "检索"; grid.OptionsSelection.MultiSelect = false; grid.OptionsMenu.EnableColumnMenu = true; grid.OptionsView.EnableAppearanceEvenRow = true; grid.OptionsView.EnableAppearanceOddRow = true; grid.OptionsSelection.EnableAppearanceFocusedCell = false; grid.Appearance.HeaderPanel.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; grid.Appearance.Row.TextOptions.HAlignment = DevExpress.Utils.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 = 25) { grid.OptionsFind.FindNullPrompt = "检索"; grid.OptionsSelection.MultiSelect = false; grid.OptionsMenu.EnableColumnMenu = false; grid.OptionsView.EnableAppearanceEvenRow = true; grid.OptionsView.EnableAppearanceOddRow = true; grid.OptionsSelection.EnableAppearanceFocusedCell = false; grid.Appearance.HeaderPanel.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; grid.Appearance.Row.TextOptions.HAlignment = DevExpress.Utils.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 = 30) { grid.OptionsView.ShowViewCaption = true; grid.ViewCaptionHeight = height; grid.Appearance.ViewCaption.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Near; } /// /// GridView注册显示行标 /// /// public static void RegistCustomDrawRowIndicator(this GridView grid, int IndicatorWidth = 40) { 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 = DevExpress.Utils.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, System.Drawing.Color? bgColor = null, System.Drawing.Color? foreColor = null) { if (bgColor == null) bgColor = System.Drawing.Color.FromArgb(0, 122, 204); if (foreColor == null) foreColor = System.Drawing.Color.White; grid.CustomDrawCell += (sender, e) => { if (e.RowHandle == (sender as GridView).FocusedRowHandle) { var cell = e.Cell as DevExpress.XtraGrid.Views.Grid.ViewInfo.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; } #endregion /// /// 绑定按列分组视图设置 Nsx_20210729 /// /// /// /// public static void SetGroupView(this GridView grid, GridColumn col, int height = 25) { 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 = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.RowFullFocus; grid.Appearance.Row.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; grid.Appearance.HeaderPanel.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; grid.OptionsBehavior.AllowFixedGroups = DevExpress.Utils.DefaultBoolean.True; grid.OptionsBehavior.AllowPixelScrolling = DevExpress.Utils.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 = DevExpress.XtraGrid.Views.Grid.GroupDrawMode.Office; grid.OptionsView.ShowGroupedColumns = true; grid.OptionsView.ShowGroupPanel = false; grid.OptionsView.ShowIndicator = false; grid.OptionsView.ShowVerticalLines = DevExpress.Utils.DefaultBoolean.False; grid.PreviewFieldName = "PlainText"; grid.SortInfo.AddRange(new DevExpress.XtraGrid.Columns.GridColumnSortInfo[] { new DevExpress.XtraGrid.Columns.GridColumnSortInfo(col, DevExpress.Data.ColumnSortOrder.None)}); grid.BestFitColumns(); } } }