报表设计器可以使用表达式或标准数据绑定为报表提供动态内容。
#表达式绑定
表达式绑定(默认模式)使您可以指定包含两个或多个数据字段和各种功能的复杂表达式。您还可以使用表达式来计算任何复杂度的摘要,而无需编写脚本,并有条件地调整数据的格式而无需设置格式规则。
将“属性网格”切换到“ 表达式”选项卡,然后调用“ 表达式编辑器”来构造表达式。
该表达式编辑器允许您使用宽范围的功能,获得报告的频带和控制,并引用当前数据源值。
请注意,与标准绑定相比,此方法可以减慢复杂的计算。
#传统数据绑定
数据绑定是早期报表版本使用的传统方法。
此模式使您可以将单个数据字段分配给报表控件的绑定属性。要提供自定义绑定逻辑,请处理具有安全隐患的报表脚本事件。
#绑定模式比较
#绑定到单个数据字段
-
控件的智能标记使您可以在相应的下拉列表中选择目标数据字段。
表达式绑定
数据绑定
-
您可以选择一个报表控件,并将其绑定到“属性网格”中的数据。
表达式绑定
数据绑定
切换到“ 表达式”选项卡,然后为“ 文本”属性指定一个数据字段。
展开(数据绑定)类别,然后将数据字段分配给Text属性。
有关更多信息,请参见将报表控件绑定到数据主题。
#绑定到多个数据字段
表达式绑定 | 数据绑定 |
---|---|
使用邮件合并功能。 单击表达式属性的省略号按钮,然后指定表达式。 | 使用邮件合并功能。 |
#计算总结
表达式绑定 | 数据绑定 |
---|---|
在“ 表达式编辑器 ”的“ 摘要”部分中选择摘要功能。 所有功能均带有“ sum”前缀。 有关更多信息,请参见计算摘要。 | 在“ 摘要功能”下拉列表中选择摘要功能。 有关更多信息,请参见计算摘要。 |
#复杂绑定,自定义摘要
表达式绑定 | 数据绑定 |
---|---|
使用表达式编辑器构造任何复杂的表达式。 有关示例,请参考计算高级摘要。 | 使用报告脚本。 有关示例,请参考计算自定义摘要。 |
#有条件地自定义外观
表达式绑定 | 数据绑定 |
---|---|
使用表达式编辑器构造控件的外观和样式属性的表达式。
有关示例,请参阅有条件地更改控件的外观。 | 创建格式设置规则,并将其分配给报表控件。 有关示例,请参阅有条件地更改控件的外观。 |
#设置绑定模式
指定静态UserDesignerOptions.DataBindingMode属性以选择报表使用的绑定模式。您可以将此属性设置为以下DataBindingMode枚举值:
-
这是默认的绑定模式。它使用受限的自定义选项(仅XRControl.BeforePrint事件可用)为报表启用表达式。
-
DataBindingMode.ExpressionsAdvanced
允许您在XRControl.BeforePrint和XRControl.PrintOnPage事件处理程序中提供表达式。表达式编辑器提供对变量部分中事件参数的访问。
在设计时,可以使用“ 报表设计器选项”对话框在Visual Studio中设置DataBindingMode属性。
注意
更改绑定模式后,重新加载报表设计器。
使用以下代码指定最终用户报表设计器的DataBindingMode属性:
static class Program {
static void Main() {
DevExpress.XtraReports.Configuration.Settings.Default.UserDesignerOptions.DataBindingMode =
DevExpress.XtraReports.UI.DataBindingMode.ExpressionsAdvanced;
// ...
}
}
#将绑定转换为表达式
内置的自动报告转换工具可帮助您转换现有报告以使用新的绑定机制。该工具在以下情况下运行:
-
将静态UserDesignerOptions.ConvertBindingsToExpressions属性设置为PromptBoolean.Prompt(默认值)并打开使用旧数据绑定的现有报表时,将出现转换对话框。
单击“ 是”以运行报告转换。
-
当你设置报表转换自动运行UserDesignerOptions.ConvertBindingsToExpressions属性PromptBoolean.True。
在设计时,可以使用“ 报表设计器选项”对话框在Visual Studio中设置ConvertBindingsToExpressions属性。
使用以下代码指定最终用户报表设计器的ConvertBindingsToExpressions属性:
static class Program {
static void Main() {
DevExpress.XtraReports.Configuration.Settings.Default.UserDesignerOptions.ConvertBindingsToExpressions =
DevExpress.XtraReports.UI.PromptBoolean.True;
// ...
}
}
在以下情况下,您将无法转换报告:
- 报表包含一个或多个控件,这些控件绑定到未分配为报表数据源的数据源。
- 报告包含格式规则,其数据源与报告的数据源不同。
注意
无法将报表从表达式转换回旧式绑定。