在上一篇文章《报表生成器FastReport .Net用户指南:表达式(上)》中,我们已经介绍了表达式中的表达式编辑器、引用报告对象、使用 .Net 函数、数据元素参考这四部分,接下来让我们继续介绍表达式中的:引用数据源、引用总值、参考报告参数
FastReport .Net是一款全功能的Windows Forms、ASP.NET和MVC报表分析解决方案,使用FastReport .NET可以创建独立于应用程序的.NET报表,同时FastReport .Net支持中文、英语等14种语言,可以让你的产品保证真正的国际性。
FastReport.NET官方版下载(qun:585577353)https://www.evget.com/product/1861/download
引用数据源
在引用数据源列时,使用以下格式:
[DataSource.Column]
例如,源名称与列名称之间用句号隔开:
[Employees.FirstName]
如果使用关系引用数据源,源名称可以是复合的。更多详情,请参阅 "数据 "部分。例如,可以这样引用相关数据源列:
[Products.Categories.CategoryName]
让我们看看下面这个在表达式中使用列的示例:
[Employees.FirstName] + " " + [Employees.LastName]
这里需要注意的是:每一列都有明确的数据类型,该类型在 "DataType(数据类型)"属性中设置(如果事先在 "Data(数据)"窗口中选择了数据列,则可以在 "Properties(属性)"窗口中看到)。表达式中如何使用列取决于列的类型。例如,在上述示例中,名和姓这两列都是字符串类型,因此可以这样使用。在下面的示例中,我们将尝试使用数值类型的 "Employees.Age "列,这将导致错误:
[Employees.FirstName] + " " + [Employees.Age]
出现错误的原因是,字符串和数字不能混用。为此,您需要将数字转换为字符串:
[Employees.FirstName] + " " + [Employees.Age].ToString()
在本例中,我们把 "Employees.Age "列当作一个整数变量来引用。事实也是如此。我们知道,所有表达式都是经过编译的。从编译器的角度来看,所有非标准的东西(如引用数据列)都会被转换成另一种类型,而这种类型是编译器可以理解的。因此,最后一个表达式将被转换成下面的形式:
(string)(Report.GetColumnValue("Employees.FirstName")) + " " + (int)(Report.GetColumnValue("Employees.Age")).ToString()
如图所示,FastReport 按以下方式更改对数据列的引用:
[Employees.FirstName] --> (string)(Report.GetColumnValue("Employees.FirstName"))
[Employees.FirstName] --> (string)(Report.GetColumnValue("Employees.FirstName"))[Employees.Age] --> (int)(Report.GetColumnValue("Employees.Age"))
也就是说,我们可以在表达式中将数据列当作具有确定类型的变量来使用。例如,下面的表达式将返回雇员姓名的第一个符号:
[Employees.FirstName].Substring(0, 1)
引用总值
要引用一个总值,请使用其名称:
[TotalSales]
FastReport 将引用总数转换为以下形式:
Report.GetTotalValue("TotalSales")
正如您所看到的,这里没有使用数据类型。之所以如此,是因为总值属于 FastReport.Variant 类型。它可以在任何表达式中直接使用,因为它会自动转换为任何类型。例如:
[TotalSales] * 0.2f
参考报告参数
要用报告参数,应使用其名称:
[Parameter1]
参数可以嵌套。在这种情况下,父参数名和子参数名都应使用以下形式:
[ParentParameter.ChildParameter]
参数有明确的数据类型。它在参数的 "DataType "属性中设置。在表达式中的使用方式取决于参数的数据类型。
FastReport 将对报告参数的引用转换为以下方式:
((string)Report.GetParameterValue("Parameter1"))