在本文中,我们将介绍创建从报表的脚本代码填充的动态矩阵的方法。该矩阵的特点是,除了从脚本添加的数据外,我们还将使用文本对象在报表单元格中插入数据字段。
假设您创建了一个具有可变列数的矩阵,这将根据任何条件添加,但您拥有的某些数据是不变的。他们总是被填满。将这些数据字段简单地放在矩阵中会很好,剩下的单元格应该从代码中填充。尽管矩阵数据的填充仅以两种方式提供(从代码或自动,数据字段),我们将匹配它们。
实际上,该技术非常简单。数据字段只是作为单独的文本对象插入到单元格中。但是,这还不是全部。将数据添加到报表中的矩阵时,必须添加数据集中的行号。
我们来看看这个例子。 创建报表并将矩阵添加到“Data”区域。连接数据源-来自交付的演示数据库Employees表。 矩阵模板如下所示:
在值为2的单元格中,我们添加了一个文本对象。在其中,选择Employees.LastName字段。这正是我们上面所说的“static”字段。
为矩阵创建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的标题。然后我们按顺序插入数据:城市,名称和电话。而且,我们需要传输数据行号以插入当前数据记录中的姓氏。 现在运行报表:
如您所见,您可以使自己更容易,而不是在报表脚本中添加所有必要的数据,而只需使用文本对象将它们放在矩阵模板中。
原文地址:https://www.cnblogs.com/wxchuachua/p/9829047.html
时间: 2024-12-30 00:01:36