XtraGrid 控件允许根据数据类型和列中所用的内置编辑器类型,按照特定列对数据排序。 本主题提供了与此相关的更多信息。
可排序的列和不可排序的列
在默认情况下,包含文本或数值数据的网格列可以被排序和分组。 以任何二进制数据 (例如图像) 或自定义数据呈现的列不能被排序/分组。
如果需要允许对显示自定义数据的列排序/分组,则可以为列对象实现 System.IComparable 接口。 请参阅 MSDN,获取实现此接口的示例。
在默认情况下,在 GridControl 中使用 MemoExEdit、ImageEdit 和 PictureEdit 内置编辑器的列不能被排序。 如果一个列使用了 MemoExEdit 控件作为内置编辑器,则可以通过把列的 OptionsColumn.AllowSort 属性设置为 True 来允许数据排序。 在这种情况下,通过显示在内置编辑器的下拉控件中的字符串对行排序。 如果需要实现自定义排序算法,则接管 ColumnView.CustomColumnSort 事件。
对于使用了 ImageEdit 和 PictureEdit 内置编辑器的列,可以通过把列的 OptionsColumn.AllowSort 属性设置为 True 来允许数据排序,并通过 ColumnView.CustomColumnSort 事件实现排序算法。
要允许对使用 MemoExEdit、ImageEdit 和 PictureEdit 内置编辑器的列进行数据分组,则把 OptionsColumn.AllowGroup 属性设置为 True。 可以接管 GridView.CustomColumnGroup 事件来使用自定义规则进行数据分组。 如果此事件没有被接管,则将根据 ColumnView.CustomColumnSort 事件的比较结果,对行进行分组。
要防止对特定列进行数据排序/分组,则使用 OptionsColumn.AllowSort 和 OptionsColumn.AllowGroup 属性。 也可以使用 GridOptionsCustomization.AllowSort 和 GridOptionsCustomization.AllowGroup 属性,来为视图中的所有列禁用排序和分组。