logo Fastreport.Net 教程2018(完结) 我也要发布文档

【FastReport教程】将数据字段添加到矩阵行的方法


下载FastReport.Net最新版本

在本文中,我们将介绍创建从报表的脚本代码填充的动态矩阵的方法。该矩阵的特点是,除了从脚本添加的数据外,我们还将使用文本对象在报表单元格中插入数据字段。

假设您创建了一个具有可变列数的矩阵,这将根据任何条件添加,但您拥有的某些数据是不变的。他们总是被填满。将这些数据字段简单地放在矩阵中会很好,剩下的单元格应该从代码中填充。尽管矩阵数据的填充仅以两种方式提供(从代码或自动,数据字段),我们将匹配它们。

实际上,该技术非常简单。数据字段只是作为单独的文本对象插入到单元格中。但是,这还不是全部。将数据添加到报表中的矩阵时,必须添加数据集中的行号。

我们来看看这个例子。 创建报表并将矩阵添加到“Data”区域。连接数据源-来自交付的演示数据库Employees表。 矩阵模板如下所示:

FastReport

在值为2的单元格中,我们添加了一个文本对象。在其中,选择Employees.LastName字段。这正是我们上面所说的“static”字段。

FastReport

为矩阵创建AfterData事件处理程序。

private void Matrix1_AfterData(object sender, EventArgs e)
 {
 DataSourceBase rowData = Report.GetDataSource("Employees"); // we get the data source Employees.
 Matrix1.DataSource = rowData; // assign it to the DataSource matrix property 
 
 rowData.Init(); // initialize the data source
 // we go through all records of the data source
 while (rowData.HasMoreRows)
 { 
 Matrix1.Data.AddValue(new Object[] {"Phone" }, new Object[] { (string)Report.GetColumnValue("Employees.City"), (string)Report.GetColumnValue("Employees.FirstName")}, new Object[] {(string)Report.GetColumnValue("Employees.HomePhone") }, Report.GetDataSource("Employees").CurrentRowNo); // add another record
 rowData.Next(); //get the next record
 }
 }

从评论中可以清楚地看到,当您添加数据字符串时,我们定义了Phone的标题。然后我们按顺序插入数据:城市,名称和电话。而且,我们需要传输数据行号以插入当前数据记录中的姓氏。 现在运行报表:

FastReport

如您所见,您可以使自己更容易,而不是在报表脚本中添加所有必要的数据,而只需使用文本对象将它们放在矩阵模板中。