/// <summary>
/// GridView列属性设置类
/// </summary>
public class BaseColumnSet
{
/// <summary>
/// 列名(可不设置)
/// </summary>
public string Name { get; set; }
/// <summary>
/// 绑定字段
/// </summary>
public string FieldName { get; set; }
/// <summary>
/// 列名(显示)
/// </summary>
public string Caption { get; set; }
/// <summary>
/// 列宽(默认100)
/// </summary>
public int Width { get; set; } = 100;
/// <summary>
/// 是否显示(默认显示)
/// </summary>
public bool Visible { get; set; } = true;
/// <summary>
/// 显示位置(默认按照列表添加顺序)
/// </summary>
public int? VisibleIndex { get; set; }
/// <summary>
/// 设置列是否可编辑(默认可编辑)
/// </summary>
public bool AllowEdit { get; set; } = true;
/// <summary>
/// 格式化类型
/// </summary>
public FormatType formatType { get; set; } = FormatType.None;
/// <summary>
/// 格式化类型名称
/// </summary>
public string FormatString { get; set; }
/// <summary>
/// 分组
/// </summary>
public int GroupIndex { get; set; } = -1;
/// <summary>
/// 排序
/// </summary>
public ColumnSortOrder sortOrder { get; set; } = ColumnSortOrder.None;
/// <summary>
/// 设置可编辑列
/// 例:RepositoryItemCheckEdit RepositoryItemImageEdit RepositoryItemGridLookUpEdit RepositoryItemComboBox
/// </summary>
public RepositoryItem ColumnEdit { get; set; }
/// <summary>
/// 设置列内容是否可合并
/// </summary>
public DefaultBoolean AllowMerge { get; set; } = DefaultBoolean.Default;
}
/// <summary>
/// 控件设置公共类
/// </summary>
public static class CtrlSetCommon
{
/// <summary>
/// 设置GridView显示列属性
/// </summary>
/// <param name="gv">GridView</param>
/// <param name="list">列属性集合</param>
/// <param name="indicatorShow">显示行号:默认True</param>
public static void SetColumns(this GridView gv, List<BaseColumnSet> list, bool indicatorShow = true, int indicatorWidth = 30)
{
string fieldName = string.Empty;
for (int i = 0; i < list.Count; i++)
{
fieldName = list[i].FieldName;
gv.Columns.AddField(fieldName);
if (!string.IsNullOrWhiteSpace(list[i].Name))
gv.Columns[fieldName].Name = list[i].Name;
gv.Columns[fieldName].Caption = list[i].Caption;
gv.Columns[fieldName].Width = list[i].Width;
gv.Columns[fieldName].VisibleIndex = list[i].VisibleIndex ?? i;
gv.Columns[fieldName].Visible = list[i].Visible;
gv.Columns[fieldName].OptionsColumn.AllowEdit = list[i].AllowEdit;
if (list[i].formatType != FormatType.None)
{
gv.Columns[fieldName].DisplayFormat.FormatType = list[i].formatType;
gv.Columns[fieldName].DisplayFormat.FormatString = list[i].FormatString;
}
gv.Columns[fieldName].GroupIndex = list[i].GroupIndex;
gv.Columns[fieldName].SortOrder = list[i].sortOrder;
if (list[i].ColumnEdit != null)
gv.Columns[fieldName].ColumnEdit = list[i].ColumnEdit;//可编辑列
if (list[i].AllowMerge != DefaultBoolean.Default)
gv.Columns[fieldName].OptionsColumn.AllowMerge = list[i].AllowMerge;//设置合并列
else
gv.Columns[fieldName].OptionsColumn.AllowMerge = DefaultBoolean.False;//设置合并列
}
if (indicatorShow)
{
gv.IndicatorWidth = indicatorWidth;
gv.CustomDrawRowIndicator += Gv_CustomDrawRowIndicator;
}
}
/// <summary>
/// 显示行号
/// </summary>
private static void Gv_CustomDrawRowIndicator(object sender, RowIndicatorCustomDrawEventArgs e)
{
if (e.Info.IsRowIndicator && e.RowHandle >= 0)
{
e.Info.DisplayText = (e.RowHandle + 1).ToString().PadLeft(3, ' ');
}
}
#region RepositoryItemGridLookUpEdit
//private static System.Windows.Forms.UserControl userCtrl = null;
//private static List<string> strList = null;
/// <summary>
/// 行内编辑(弹出RepositoryItemGridLookUpEdit)
/// 设置GridView显示列属性
/// </summary>
/// <param name="gridLookUpEdit">行内编辑弹出控件</param>
/// <param name="list">列属性集合</param>
/// <param name="dt">数据源</param>
/// <param name="valueMember">绑定值成员</param>
/// <param name="displayMember">绑定显示成员</param>
/// <param name="nullText">空值显示:默认为空字符串</param>
public static void SetColumns(this RepositoryItemGridLookUpEdit gridLookUpEdit, List<BaseColumnSet> list, DataTable dt = null, string valueMember = "", string displayMember = "", string nullText = "")
{
GridView gv = gridLookUpEdit.View;//获取当前控件的GridView
//DevExpress.XtraGrid.GridControl gridCtrl = gridLookUpEdit.View.GridControl;
string fieldName = string.Empty;
for (int i = 0; i < list.Count; i++)
{
fieldName = list[i].FieldName;
gv.Columns.AddField(fieldName);
if (!string.IsNullOrWhiteSpace(list[i].Name))
gv.Columns[fieldName].Name = list[i].Name;
gv.Columns[fieldName].Caption = list[i].Caption;
gv.Columns[fi