GridControl-Grid View 网格视图

GoTo 数据网格和视图入门

GridView是默认的数据网格视图,以传统的表格格式显示数据。“视图”将数据源记录渲染为行,将数据源字段渲染为列。数据值显示在各个单元格中。
在这里插入图片描述

Grid Columns

网格列

重要注意事项

不能将多个数据网格列绑定到同一数据源字段。如果需要执行此操作,请创建Unbound Columns并处理CustomUnboundColumnData事件,以手动将数据源值复制到未绑定的列单元格。此限制也适用于其他数据感知控件(数据网格、树状列表、垂直网格等)。
列字段名称必须唯一。
有关其他数据感知控件中类似功能的信息,请参阅以下帮助文章:列(树状列表)、行(垂直网格)、数据透视网格字段(数据透视网格)。

自动列生成

将数据网格绑定到数据源时,控件会自动为每个绑定的数据字段生成一列(如果未禁用“自动填充列”属性)。对于代码优先的数据源(例如,实体框架模型),可以使用Display属性标记属性,并禁用其AutoGenerateField参数以跳过此属性的列生成。下面代码中的“Display”属性阻止数据网格生成“Additional Info”列。

[Display(AutoGenerateField = false, Description = "This column isn't created")]
public string AdditionalInfo {
    get; set; }

您可以使用更多的属性来重新排列列、修改其标题的标题、更改其默认的就地编辑器等。请参阅以下主题了解更多信息:数据注释属性。
如果将以前的数据源替换为新的数据源,数据网格将不会自动重新生成列。您需要手动执行此操作,方法是调用数据网格设计器并单击“列”选项卡中的“检索字段”按钮。
在这里插入图片描述
要在代码中执行相同操作,请调用BaseView.PopulateColumns。在更改数据源后直接填充列方法,或在GridControl上填充列方法GridControl.DataSourceChanged事件。

手动添加和删除列

  • 与数据源中声明的数据字段相关联的列称为绑定列。要手动添加此类列,请调用数据网格设计器,切换到“Columns”选项卡并单击“Show Field List”按钮,然后将数据字段拖动到列列表中。没有相应网格列的数据字段将用粗体文本突出显示。
    在这里插入图片描述

  • 也可以在同一个设计器页面上使用“Add Column” and “Insert Column”按钮。在这种情况下,您需要设置每列的GridColumn.FieldName属性。否则,列将被解除绑定,并且不会从数据源接收单元格值。
    在这里插入图片描述

  • 要删除列,请使用“Remove Column”设计器按钮,或者在设计时单击列标题并按“Delete”键。若要删除代码中的列,请调用GridView.Columns.Remove方法。

  • 即使将代码中创建的列添加到Columns集合中,这些列也是不可见的。若要显示列,请启用其“可见”属性。也可以使用AddVisible方法创建列,将其绑定到指定的数据字段,然后在视图中显示。

// Create a new column.
GridColumn colPrice = new GridColumn();
// Bind the column to the 'Price' field in a data source.
colPrice.FieldName = "Price";
// Adds the column to the Columns collection. The column is hidden.
gridView.Columns.Add(colPrice);

// Creates a new column, binds it to the 'OrderDate' field in a data source,
// and displays it in the Grid View.
gridView.Columns.AddVisible("OrderDate");

行标题

要修改列标题并添加图像,请在设计时选择一列并调用其智能标记。如果某列未分配标题,则该列将根据相关数据字段的名称生成标题。
在这里插入图片描述

隐藏垂直列边框

您可以通过禁用GridOptionsView来隐藏列和行边界。显示垂直线和网格选项视图。显示水平线设置。GridOptionsView.ShowVerticalLines and GridOptionsView.ShowHorizontalLines

列宽

数据网格将其所有列压缩到其当前客户端区域中。用户可以调整除最后一列以外的所有列的大小,并且总列宽不能超过父视图的宽度。
禁用GridOptionsView.ColumnAutoWidth属性,以允许网格列超越视图边界。如果列占用的空间大于视图提供的空间,则会自动显示水平滚动条。
在这里插入图片描述

相关API

  • GridColumn.MinWidth, GridColumn.Width, GridColumn.Resize -允许您手动设置列宽。如果GridOptionsView.ColumnAutoWidth属性未被禁用,当前列宽可能与您的自定义设置不同。
  • GridColumn.VisibleWidth -检索当前列宽。
  • GridView.ColumnWidthChanged - 在更改列宽后发生。
  • BaseView.IsSizingState / GridView.IsSizingState - 允许您识别最终用户当前是否正在调整网格列的大小。
  • OptionsColumn.FixedWidth - 在列自动宽度模式下,启用此设置可防止列自动调整大小。

最佳适配

为了确保一列或视图的所有列具有足够的宽度,以便单元格完全显示其内容,最终用户可以右键单击列标题,然后选择“最佳匹配”(或“最佳匹配(所有列)”)选项。
在这里插入图片描述

相关API

  • GridView.BestFitColumns–将最佳拟合应用于所有列。
  • GridColumn.BestFit–将最佳拟合应用于一个特定列。
  • GridOptionsView.BestFitMaxRowCount–最佳拟合操作扫描所有网格行以确定最佳列宽。此属性允许您限制已处理的行数,从而提高整体网格性能。
  • GridOptionsView.BestFitMode–允许您选择最佳拟合操作是优先考虑精度还是计算速度

自动填充列

分配给GridView.AutoFillColumn属性会自动调整大小以填充视图提供的任何可用空间。在下面的动画中,自动填充列为“地址”。
在这里插入图片描述

固定列

将列CompanyName的“Fixed”属性设置为“Left”或“Right”,以将该列定位到视图的相应侧。当用户水平滚动视图时,固定列仍然可见。
在这里插入图片描述
如果将“Fixed”特性设置为“MiddleLeft”,则直到用户将该列滚动到视图的左侧,该列才会被定位。当列到达左侧时,它将变为固定列,而其他列将继续滚动。
在这里插入图片描述

使用FixedColumnHighlightMode属性可以区分固定列和常规列。

Fixed Columns演示演示了如何为网格列提供自定义弹出菜单,允许用户在运行时定位列。

相关API

GridView.FixedLineWidth

GridViewAppearances.FixedLine

默认情况下,最终用户可以执行以下操作

  • 拖动右列边缘以调整其大小。

Related API: OptionsColumn.AllowSize, GridOptionsCustomization.AllowColumnResizing.

  • 拖放列标题可以重新排列列。

Related API: OptionsColumn.AllowMove, GridOptionsCustomization.AllowColumnMoving.

  • 通过向下拖动列标题或右键单击标题并选择“隐藏此列”选项来隐藏列。

Related API: OptionsColumn.AllowShowHide, GridOptionsCustomization.AllowQuickHideColumns.

  • 右键单击列标题并选择“列选择器”选项以调用一个对话框,该对话框允许用户将隐藏的列拖回视图。

Related API: GridView.CustomizationFormBounds, GridOptionsCustomization.CustomizationFormSearchBoxVisible, GridView.CustomizationForm, GridView.ShowCustomizationForm

  • 将列标题拖动到组区域中以应用分组。

Related API: OptionsColumn.AllowGroup, GridOptionsCustomization.AllowGroup

  • 单击列标题可按此列的值对数据进行排序。随后的单击会将排序顺序从升序更改为降序和降序。

Related API: OptionsColumn.AllowSort, GridOptionsCustomization.AllowSort

  • 单击列标题中的筛选按钮以筛选网格数据。

Related API: OptionsColumnFilter.AllowFilter, GridOptionsCustomization.AllowFilter

代码识别和访问的网格列

要检索特定列,请使用以下API:

  • ColumnView.Columns

存储属于此视图的所有列,并通过索引或相关数据字段名称提供对这些列的访问。

  • ColumnView.FocusedColumn

检索当前关注的单元格所属的列。

  • ColumnView.GetVisibleColumn

按列的可见索引(GridColumn.VisibleIndex属性)返回列。

Unbound Columns

未绑定列
未绑定列是显示任何自定义数据的网格列。您可以使用未绑定的列来显示来自外部源的数据,将多个数据源合并为一个数据源,或者使用表达式基于其他列数据计算值。

未绑定列和常规绑定列是同一类的对象:GridColumn、BandedGridColumn或LayoutViewColumn类。这意味着未绑定列完全支持所有列功能——排序、分组、筛选、摘要等。
但是,即使所有列都未绑定,数据网格也无法在没有数据源的情况下运行。例如,使用UnboundSource组件来告诉数据网格它应该生成多少行。

创建未绑定的列

要添加未绑定的列,请调用数据网格设计器的“Columns”选项卡,然后单击“Add Column”按钮。在特性网格中,设置两个特性:

  • GridColumn.FieldName–必须将此属性设置为与任何数据源字段名称都不匹配的唯一值。
  • GridColumn.UnboundDataType–将此属性设置为列应显示的数据类型。列自动使用与所选数据类型相对应的在位编辑器
    在这里插入图片描述
    如果在代码中添加未绑定的列,请记住显式设置它们的可见性。

未绑定表达式

使用未绑定表达式,可以基于其他列值计算未绑定列的值。表达式是在“表达式编辑器”对话框中构建的。要调用此对话框,请单击GridColumn旁边的省略号按钮。VS属性网格中的UnboundExpression属性。
在这里插入图片描述在代码中,表达式被指定为简单字符串。例如,下面的代码通过从。

UnboundExpression = "[charge_total]*10",

gridView1.Columns.Add(new DevExpress.XtraGrid.Columns.GridColumn()
{
   
    Caption = "Custom Unbound Column",
    FieldName = "UnboundColumn3",
    UnboundDataType = typeof(string),
    UnboundExpression = "[charge_total]*10",
    Visible = true
});

在运行时修改未绑定的表达式

用户可以右键单击未绑定列的标题,然后选择“Expression Editor…”来修改表达式。您可以选择用户是使用旧版编辑器(与您在设计时使用的编辑器相同),还是使用支持语法高亮显示和自动完成的更新版本。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值