内置编辑器概述
网格控件可以把内置编辑器指派到数据单元格,来允许执行下列操作:
- 在显示模式中 (编辑不活动时) 以适当的方式呈现数据;
- 以特定的方式/格式来编辑单元格取值,这样使最终用户能轻松输入数据。
XtraEditors 库包括了许多可用于内置编辑的编辑器。 包括: TextEdit、ButtonEdit、DateEdit、CalcEdit、ProgressBar、LookUpEdit 等。 另外,XtraGrid 套件包括了一个下拉 GridLookUpEdit 控件,也可以内嵌到网格控件的单元格中 (此编辑器呈现了一个查找编辑器,在它的下拉窗口中能够显示 XtraGrid 控件)。 此外,如果标准的编辑器不满足需求,则通过从现有编辑器派生,可以创建一个自定义编辑器。
下面的插图展示了一个在列中指派有不同编辑器的示例网格视图:
注意 |
---|
在当前的版本中,任何编辑器都派生于可用作内置编辑器的 BaseEdit 控件。 第三方编辑器不能被内嵌。 |
提供内置编辑器
要把一个内置编辑器提供到网格视图中,必须创建一个特定的 repository 项。 Repository 项是 RepositoryItem 类的子类,存储了与特定编辑器相关的属性和事件。 它有创建相应的全功能编辑器所必需的全部信息。 请参阅 编辑器的类结构 主题,来获得关于这种机制的其他信息。
在把 repository 项提供到网格控件之前,必须把它添加为 内部的 或 外部的 repository (repository 项的集合)。- 内部的 Repository
内部的 repository 包含了只能用于当前网格控件的编辑器。 不能在其他控件中使用来源于该 repository 的编辑器。
可以通过网格控件的 EditorContainer.RepositoryItems 属性,把“repository 项”添加到内部 repository。 在设计时刻,则使用网格控件的设计器的 Repository 编辑器 页面。
- 外部的 Repository
如果需要在几个网格控件 (或者其他容器控件,例如 XtraTreeList、XtraVerticalGrid 等) 中使用相同的编辑器 (repository 项) ,则需要使用一个外部的 repository。 它是通过 PersistentRepository 组件表示的。
创建一个有特定内置编辑器 (repository 项) 的外部 repository,然后把它绑定到所需的控件。 例如,使用网格控件的 EditorContainer.ExternalRepository 属性把它绑定到一个网格控件。
数据单元格可以使用由内部及外部 repositories 提供的编辑器。 请参阅 Repositories 和 Repository 项 主题,来获取其他信息。
提供内置编辑器的方法
使用下列方法,编辑器可以被指派到数据单元格:
- 把编辑器指派到列和卡片字段
这是最常用的方法,典型地,数据字段包含相同类型的取值,因此所有取值仅需要一个编辑器。
- 把编辑器指派到个别单元格
此方法用于字段包含不同类型的数据时。 例如,提供的数据集可能包含了字段作为记录、而记录作为数据字段的数据。
- 指派内置编辑器
此主题演示如何使用不同的编辑器来呈现和编辑单元格取值。
注意,可以组合使用这些捆绑编辑器的方法。 意思是可以为列提供编辑器,然后改写那些列中特定单元格的编辑器分配。