PivotGrid 的行标题、列标题自定义显示格式
首先,自定义格式的问题是基于字段对象而不是 PivotGrid 对象的属性,虽然字段对象有个 DisplayFormat 属性,但通过查阅文档,发现该属性只适用于 数据区域,也就是说,当字段被摆放在 列区域 或 行区域 时, DisplayFormat 属性是无效的。
如果某一字段的类型是 DateTime,并且希望在 列区域 或 行区域 以“4月、10月”或“1季度、2季度”等格式分组显示,可以直接设置该字段的 GroupInterval 属性为 giDateMonth 或 giDateQuarter 即可,并且在中文操作系统上会以“二月、十月”的中文格式显示且排序正确,不足的地方是:虽然分组标题显示正确,但如果希望在 prefilter 中设置过滤值,那么因为该字段本质上还是 DateTime格式,在 prefilter 对话框中,该字段并不是让用户输入1-12(月份)、1-4(季度),而是要输入日期格式 yyyy-mm-dd 的数据。这种方法的另外一个缺点是,如果该列数据中包含 null 值,那么根据该数值计算分组标题 GroupInterval 时会产生异常,DevExpress 官方的建议是,如果列中有大量的 null 值,建议使用下面的 OnGetGroupValueDisplayText 事件中显示自定义组标题。
另一个解决的方案是:在SQL语句中返回季度或月份的计算字段(类型为 Integer),然后将 PivotGrid 中该字段的 GroupInterval 属性设置为 giCustom,然后在该字段的 OnGetGroupValueDisplayText 写入自定义分组标题的代码:
procedure TfrmChart.Pivot1OrderQuarterGetGroupValueDisplayText(
Sender: TcxPivotGridField; const AGroupValue: Variant;
var AText: String);
begin
if VarIsNull(AGroupValue) then
AText := '空白'
else
AText := VarToStr(AGroupValue) + ' 季度';
end;

浙公网安备 33010602011771号