本文档描述了如何在报表中使用“计算字段”。 “计算字段”主要被用于 data-aware(数据感知) 报表中: 当使用 标准的数据绑定 和 邮件合并 时。 “计算字段”允许根据确定的表达式,预处理报表的输入数据。 因此,使用“计算字段”允许把复杂的表达式应用到一个或几个数据字段,而这些数据字段是从报表的下层数据源获取的。 此外,还可以根据“计算字段” 的值对报表数据进行 排序 和 分组。
本文档由下列小节组成。
“计算字段”是通过 CalculatedFieldCollection 中的 CalculatedField 类的实例表示的。 可以通过报表的 XtraReport.CalculatedFields 属性来访问它们的集合。
在设计时刻,通过 Field List(字段列表) 可以轻松管理它们。 要获知细节,请参阅 如何: 创建计算字段。
“计算字段”的取值是通过计算它的 表达式 获到的,通过 CalculatedField.Expression 属性的文本来指定表达式。 表达式编辑器 可以用于可视地构建“计算字段”的表达式。 在 Field List(字段列表) 中,使用鼠标右键单击“计算字段”并在弹出的上下文菜单中选择 Edit Expression(编辑表达式)... 项,就可以调用“表达式编辑器”。
然后,就可以使用此对话框来构建所需的表达式。
在构建表达式时,可以使用数据字段 (从 CalculatedField.DataSource 和 CalculatedField.DataMember 属性值指定的数据表中获得数据字段),报表参数,以及相关的日期时间、逻辑、数学和字符串函数。 这些函数的完整列表,请参阅 表达式。
通过使用 [中括号] 括起的字段名称和参数名称,就可以把数据字段和报表参数插入到表达式的文本中,注意在参数名称前要加上“Parameters.”前缀。
“计算字段”的表达式不能计算其他“计算字段”的取值。
必须以 #符号# 括起日期时间常量 ([OrderDate] >= #1/1/2009#)。 为了表示 null 引用 (不涉及任何对象的引用),可以使用一个问号 ([Region] != ?)。 此外,注意应该使用 '单引号' 括起字符串,否则会发生错误:
要把单引号嵌入到表达式的文本中,应该以另一个单引号前导,例如字符串 'It''s a sample text'。
“计算字段”返回的取值类型是由其 CalculatedField.FieldType 属性指定的。 在 FieldType 枚举中列出了所有可用的类型。
尽管通常“计算字段”返回的取值被转换为字符串而显示在 text-aware 报表控件中,但是它们可以返回任一类型的取值 (当 CalculatedField.FieldType 属性值被设置为 None 时)。 例如,如果数据库字段包含图像,就可以把“计算字段”的表达式设置为 "=...",然后此“计算字段”就可以被绑定到 XRPictureBox 控件。
计算字段不支持为 XRChart 和 XRPivotGrid 控件提供数据,这是因为这些控件的数据绑定方法具有特殊性。
最后,可以根据“计算字段” 的值对报表数据进行 排列 和 分组。 关于这种任务的示例,请参阅 如何: 通过星期名称对数据分组。
对于那些因为某种原因不能使用“计算字段”来完成的任务,我们推出了 XRControl.EvaluateBinding 事件,在此事件中允许对控件数据源中获取的数据进行自定义计算。
对于那些不能使用 表达式编辑器 提供的标准函数集来解决的任务,可以在 CalculatedField.GetValue 事件处理程序 (或在它的 脚本 搭档中) 中计算自定义函数。 关于这种任务的示例,请参阅 如何: 通过汇总函数的计算结果对分组排序。
下列指南展示了在不同环境中“计算字段”的使用。