示例 8.手動填充矩陣
在我們看過的所有示例中,矩陣都是自動填充數(shù)據(jù)的,因為它連接了數(shù)據(jù)源。矩陣的數(shù)據(jù)源在 "DataSource "屬性中顯示。雖然我們沒有手動設置該屬性的值,但在向矩陣添加數(shù)據(jù)列時,數(shù)據(jù)源會隱式出現(xiàn)。
使用腳本可以手動填充矩陣。為此,需要創(chuàng)建矩陣的 "ManualBuild "事件處理程序。在處理程序代碼中調用 "AddValue "方法來添加數(shù)值。讓我們演示如何創(chuàng)建一個矩陣,打印出以下 10х10 表格:
1 2 3 ...
1 1
2 2
3 3
... ...
請執(zhí)行以下操作:
- 在報告中添加一個空矩陣;
- 將 "Data "窗口中的任意元素放入矩陣的行、列和單元格中。然后雙擊矩陣元素,調用表達式編輯器,清除表達式;
- 清除矩陣的 "DataSource"屬性。
這些步驟都是為了創(chuàng)建一個只有一行、一列和一個單元格的 "虛擬 "矩陣。因此,矩陣將如下所示:
現(xiàn)在建一個 "ManualBuild "事件處理程序。為此,選擇矩陣,進入 "Properties "窗口并按下按鈕。雙擊 "ManualBuild "事件,F(xiàn)astReport 將創(chuàng)建一個空的事件處理程序。在其中寫入以下代碼:
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 "方法來填充數(shù)據(jù)。該方法有三個參數(shù),每個參數(shù)都是 System.Object 類型的數(shù)組。第一個參數(shù)是列值,第二個參數(shù)是行值,第三個參數(shù)是單元格值。請注意,每個數(shù)組中值的數(shù)量應符合對象的設置!在我們的例子中,一個對象在列、行和單元格中都有一個級別,因此我們?yōu)榱小⑿泻蛦卧穹謩e提供一個值。
運行報告時,我們將看到以下內容:

讓我們演示如何在矩陣的第 7 列和第 3 行的交叉點上添加數(shù)值 "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); }