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
|
{
|
/// <summary>
|
/// GridView的拓展类
|
/// </summary>
|
public static class GridViewExtend
|
{
|
#region 默认
|
/// <summary>
|
/// 普通视图设置
|
/// </summary>
|
/// <param name="grid"></param>
|
/// <param name="height"></param>
|
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();
|
}
|
|
/// <summary>
|
/// 限制功能的视图
|
/// </summary>
|
/// <param name="grid"></param>
|
/// <param name="height"></param>
|
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();
|
}
|
|
/// <summary>
|
/// 普通编辑视图设置
|
/// </summary>
|
/// <param name="grid"></param>
|
/// <param name="height"></param>
|
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();
|
}
|
|
/// <summary>
|
/// 限制功能的编辑视图
|
/// </summary>
|
/// <param name="grid"></param>
|
/// <param name="height"></param>
|
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();
|
}
|
|
/// <summary>
|
/// 绑定普通编辑视图设置
|
/// </summary>
|
/// <param name="grid"></param>
|
/// <param name="height"></param>
|
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();
|
}
|
|
/// <summary>
|
/// 绑定限制编辑视图设置
|
/// </summary>
|
/// <param name="grid"></param>
|
/// <param name="height"></param>
|
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();
|
}
|
|
/// <summary>
|
/// 显示ViewCaption
|
/// </summary>
|
/// <param name="grid"></param>
|
/// <param name="height"></param>
|
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;
|
}
|
|
|
/// <summary>
|
/// GridView注册显示行标
|
/// </summary>
|
/// <param name="grid"></param>
|
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;
|
}
|
};
|
}
|
|
/// <summary>
|
/// 注册自定义组名
|
/// </summary>
|
/// <param name="grid"></param>
|
/// <param name="col"></param>
|
/// <param name="func"></param>
|
public static void RegistCustomGroupRow(this GridView grid, GridColumn col, Func<object, string> 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);
|
}
|
};
|
}
|
|
/// <summary>
|
/// 自定义单元格样式
|
/// </summary>
|
/// <param name="grid"></param>
|
/// <param name="bgColor"></param>
|
/// <param name="foreColor"></param>
|
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;
|
}
|
}
|
};
|
}
|
|
/// <summary>
|
/// 查询当前数据行
|
/// </summary>
|
public static T GetCurrentViewModel<T>(this GridView grid, List<T> 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
|
|
/// <summary>
|
/// 绑定按列分组视图设置 Nsx_20210729
|
/// </summary>
|
/// <param name="grid"></param>
|
/// <param name="col"></param>
|
/// <param name="height"></param>
|
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();
|
}
|
|
|
|
}
|
}
|