示例 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); }