示例 8.手动填充矩阵
在我们看过的所有示例中,矩阵都是自动填充数据的,因为它连接了数据源。矩阵的数据源在 "DataSource "属性中显示。虽然我们没有手动设置该属性的值,但在向矩阵添加数据列时,数据源会隐式出现。
使用脚本可以手动填充矩阵。为此,需要创建矩阵的 "ManualBuild "事件处理程序。在处理程序代码中调用 "AddValue "方法来添加数值。让我们演示如何创建一个矩阵,打印出以下 10х10 表格:
1 2 3 ...
1 1
2 2
3 3
... ...
请执行以下操作:
- 在报告中添加一个空矩阵;
- 将 "Data "窗口中的任意元素放入矩阵的行、列和单元格中。然后双击矩阵元素,调用表达式编辑器,清除表达式;
- 清除矩阵的 "DataSource"属性。
这些步骤都是为了创建一个只有一行、一列和一个单元格的 "虚拟 "矩阵。因此,矩阵将如下所示:
现在建一个 "ManualBuild "事件处理程序。为此,选择矩阵,进入 "Properties "窗口并按下
按钮。双击 "ManualBuild "事件,FastReport 将创建一个空的事件处理程序。在其中写入以下代码:
private void Matrix1_ManualBuild(object sender, EventArgs e)
{
// Our matrix has one level in row, column and cell.
// Create 3 arrays of object[] type, each with one element
// (per number of levels).
object[] columnValues = new object[1];
object[] rowValues = new object[1];
object[] cellValues = new object[1];
for (int i = 1; i <= 10; i++)
{
// Filling arrays
columnValues[0] = i;
rowValues[0] = i;
cellValues[0] = i;
// Adding data into the matrix
Matrix1.AddValue(columnValues, rowValues, cellValues);
}
}
在处理程序中,应使用 "Matrix "对象的 "AddValue "方法来填充数据。该方法有三个参数,每个参数都是 System.Object 类型的数组。第一个参数是列值,第二个参数是行值,第三个参数是单元格值。请注意,每个数组中值的数量应符合对象的设置!在我们的例子中,一个对象在列、行和单元格中都有一个级别,因此我们为列、行和单元格分别提供一个值。
运行报告时,我们将看到以下内容:
让我们演示如何在矩阵的第 7 列和第 3 行的交叉点上添加数值 "21"。为此,请按以下方式修改代码:
private void Matrix1_ManualBuild(object sender, EventArgs e) {
object[] columnValues = new object[1];
object[] rowValues = new object[1];
object[] cellValues = new object[1]; for (int i = 1; i <= 10; i++)
{
columnValues[0] = i;
rowValues[0] = i;
cellValues[0] = i;
Matrix1.AddValue(columnValues, rowValues, cellValues);
}
columnValues[0] = 7;
rowValues[0] = 3;
cellValues[0] = 21;
Matrix1.AddValue(columnValues, rowValues, cellValues);
}

QQ交谈
在线咨询

渝公网安备
50010702500608号

客服热线