内置编辑器概述
XtraTreeList 控件允许把内置编辑器指派到数据单元格。 当需要显示不同的数据类型 (数值、日期-时间、图像等) 时,或者需要帮助最终用户输入时,这是很有用的。 可以使用由 XtraEditors 库提供的任何编辑器,或者在标准编辑器不符合需求时创建自定义编辑器。 下面的插图展示了一个在每列中都有不同编辑器的示例树状列表。
如上图中所示的那样,所有节点单元格都显示了编辑器按钮。 编辑器按钮在树状列表中的显示风格是由 TreeList.ShowButtonMode 属性指定的。 可用的编辑器按钮显示模式在 ShowButtonModeEnum 主题中列出。
通过存储库——“repository 项”的集合,编辑器被提供到树状列表。 “repository 项”存储了单个编辑器的属性和事件处理程序。 使用那些设置,“repository 项”能够创建全功能的用于编辑单元格取值的编辑器。 请参阅 编辑器的类结构 主题来获得更多信息。
有两种为 XtraTreeList 提供编辑器的存储库。 第一种是树状列表的内部存储库。 在运行时刻可以使用树状列表的 EditorContainer.RepositoryItems 属性访问此存储库。 在设计时刻,树状列表提供了定制此存储库的便捷对话框。 可以通过设计器的 Repository Editor 页面使用此对话框。 注意,内部存储库只应包含在 XtraTreeList 中使用的、而没有被其他控件使用的编辑器。 如果需要在多个控件内部使用相同的编辑器 (repository 项),则应该使用 PersistentRepository 组件,此组件作为外部存储库。 要把外部存储库绑定到树状列表,则使用其 EditorContainer.ExternalRepository 属性。 注意, 数据单元格可以使用由内部及外部存储库提供的编辑器。 请参阅 Repositories 和 Repository 项 主题,来获取其他信息。
使用下列方法,也可以把编辑器指派到节点单元格:
- 把编辑器指派到列
这是最常用的方法,典型地,数据字段包含了相同类型的取值,因此对其所有取值只需要一个编辑器。
- 把编辑器指派到个别单元格
此方法用于字段包含不同类型的数据时。 例如,提供的数据集可能包含了字段作为记录、而记录作为数据字段的数据。
默认的编辑器
如果没有为列显式指定编辑器,则该列使用默认的编辑器。 默认编辑器的类型取决于绑定数据字段的类型。 在默认情况下,绑定到 DateTime 字段的列使用日期编辑器,绑定到 Boolean 字段的列使用复选编辑器,其他所有情况则使用文本编辑器。
注意,默认编辑器没有被添加到树状列表的内部存储库中,也不能在运行时刻改变其设置。 在需要时,这些编辑器被动态创建,因此它们始终有默认的行为。 意思是如果需要为 Boolean 列使用定制的复选框编辑器,则仍应创建相应的“repository 项”,并把它显式指派到所需的列。 此规定适用于所有类型的默认编辑器。