• <menu id="w2i4a"></menu>
  • logo FastReport中文文檔

    文檔首頁>>FastReport中文文檔>>示例 8.手動填充矩陣

    示例 8.手動填充矩陣


    在我們看過的所有示例中,矩陣都是自動填充數(shù)據(jù)的,因?yàn)樗B接了數(shù)據(jù)源。矩陣的數(shù)據(jù)源在 "DataSource "屬性中顯示。雖然我們沒有手動設(shè)置該屬性的值,但在向矩陣添加數(shù)據(jù)列時(shí),數(shù)據(jù)源會隱式出現(xiàn)。

    使用腳本可以手動填充矩陣。為此,需要?jiǎng)?chuàng)建矩陣的 "ManualBuild "事件處理程序。在處理程序代碼中調(diào)用 "AddValue "方法來添加數(shù)值。讓我們演示如何創(chuàng)建一個(gè)矩陣,打印出以下 10х10 表格:

                                           1                                 2                                3                               ...                                        

    1                                     1                                                                                                                                               

    2                                                                        2                                                                                                            

    3                                                                                                          3                                                                          

    ...                                                                                                                                          ...                                        

    請執(zhí)行以下操作:

    • 在報(bào)告中添加一個(gè)空矩陣;
    • 將 "Data "窗口中的任意元素放入矩陣的行、列和單元格中。然后雙擊矩陣元素,調(diào)用表達(dá)式編輯器,清除表達(dá)式;
    • 清除矩陣的 "DataSource"屬性。

    這些步驟都是為了創(chuàng)建一個(gè)只有一行、一列和一個(gè)單元格的 "虛擬 "矩陣。因此,矩陣將如下所示:

    fastreport

    現(xiàn)在建一個(gè) "ManualBuild "事件處理程序。為此,選擇矩陣,進(jìn)入 "Properties "窗口并按下按鈕。雙擊 "ManualBuild "事件,F(xiàn)astReport 將創(chuàng)建一個(gè)空的事件處理程序。在其中寫入以下代碼:

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

    在處理程序中,應(yīng)使用 "Matrix "對象的 "AddValue "方法來填充數(shù)據(jù)。該方法有三個(gè)參數(shù),每個(gè)參數(shù)都是 System.Object 類型的數(shù)組。第一個(gè)參數(shù)是列值,第二個(gè)參數(shù)是行值,第三個(gè)參數(shù)是單元格值。請注意,每個(gè)數(shù)組中值的數(shù)量應(yīng)符合對象的設(shè)置!在我們的例子中,一個(gè)對象在列、行和單元格中都有一個(gè)級別,因此我們?yōu)榱?、行和單元格分別提供一個(gè)值。

    運(yùn)行報(bào)告時(shí),我們將看到以下內(nèi)容:

    fastreport

    讓我們演示如何在矩陣的第 7 列和第 3 行的交叉點(diǎn)上添加數(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);
    }
    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();