本主题描述如何把编辑器绑定到 列 或 卡片字段。 编辑器的绑定方法是一种最常用的方法,因为列与卡片字段通常呈现包含相同类型取值的数据字段。 这样,自然为一个列/卡片字段的所有单元格使用相同的编辑器。 但是对于网格视图,也可以为不同的列单元格指定不同的编辑器。 具体细节请参阅 把编辑器指派到个别单元格 主题。 内置编辑器概述 主题描述了用于实现内置编辑功能的 repository 机制。
显式指派编辑器
在设计时刻,该属性提供了一个下拉窗口,允许选择“repository 项”——它定义了编辑器的类型、保存编辑器的属性和事件处理程序。 可以指派一个存储在 repository 内的项,或者使用默认设置创建一个新的 repository 项。 如果创建了新的 repository 项,则它被自动添加到网格控件的内部 repository。
下面的插图展示了在使用网格视图时,访问列的 GridColumn.ColumnEdit 属性的一种方式: 通过单击列标头,并且在 属性 窗口访问属性。
注意,当使用卡片视图时,不能以这种方式访问列的设置,而是需要打开 XtraGrid 设计器,切换到 Column 页面并选择所需的列。
下面的代码展示了如何创建一个组合框 repository 项,并把它绑定到 colCity 集合。 该项被添加到网格视图的内部 repository。
C# | 复制代码 |
---|---|
using DevExpress.XtraEditors.Repository; //Create a repository item for a combo box editor RepositoryItemComboBox riCombo = new RepositoryItemComboBox(); riCombo.Items.AddRange(new string[] {"London", "Berlin", "Paris"}); //Add the item to the internal repository gridControl1.RepositoryItems.Add(riCombo); //Now you can define the repository item as an in-place column editor colCity.ColumnEdit = riCombo; |
Visual Basic | 复制代码 |
---|---|
Imports DevExpress.XtraEditors.Repository 'Create a repository item for a combo box editor Dim riCombo As RepositoryItemComboBox = New RepositoryItemComboBox riCombo.Items.AddRange(New String() {"London", "Berlin", "Paris"}) 'Add the item to the internal repository GridControl1.RepositoryItems.Add(riCombo) 'Now you can define the repository item as an in-place column editor colCity.ColumnEdit = riCombo |
下面的插图展示了在执行示例代码之前和之后的视图:
默认的编辑器
如果列的 GridColumn.ColumnEdit 属性值是 null (在 Visual Basic 中为 Nothing),则列使用默认的编辑器。 默认的编辑器类型取决于绑定数据字段的类型。 在默认情况下,绑定到 DateTime 字段的列使用日期编辑器,绑定到 Boolean 字段的列使用复选编辑器,其他所有情况则使用文本编辑器。 实际的绑定到列的 repository 项可以通过列的 GridColumn.RealColumnEdit 属性获取。
注意,默认的编辑器不添加到网格控件的内部 repository,不能在运行时刻更改它们的设置。 在请求时,这些编辑器被自动创建,因此始终有默认的行为。 意思是如果需要为 Boolean 列使用一个自定义复选框编辑器,则仍然应该创建相应的 repository 项,并显式地把它指派到所需的列。 这对所有默认的编辑器类型都适用。