【FastReport教程】將數(shù)據(jù)字段添加到矩陣行的方法
在本文中,我們將介紹創(chuàng)建從報(bào)表的腳本代碼填充的動(dòng)態(tài)矩陣的方法。該矩陣的特點(diǎn)是,除了從腳本添加的數(shù)據(jù)外,我們還將使用文本對(duì)象在報(bào)表單元格中插入數(shù)據(jù)字段。
假設(shè)您創(chuàng)建了一個(gè)具有可變列數(shù)的矩陣,這將根據(jù)任何條件添加,但您擁有的某些數(shù)據(jù)是不變的。他們總是被填滿。將這些數(shù)據(jù)字段簡單地放在矩陣中會(huì)很好,剩下的單元格應(yīng)該從代碼中填充。盡管矩陣數(shù)據(jù)的填充僅以兩種方式提供(從代碼或自動(dòng),數(shù)據(jù)字段),我們將匹配它們。
實(shí)際上,該技術(shù)非常簡單。數(shù)據(jù)字段只是作為單獨(dú)的文本對(duì)象插入到單元格中。但是,這還不是全部。將數(shù)據(jù)添加到報(bào)表中的矩陣時(shí),必須添加數(shù)據(jù)集中的行號(hào)。
我們來看看這個(gè)例子。 創(chuàng)建報(bào)表并將矩陣添加到“Data”區(qū)域。連接數(shù)據(jù)源-來自交付的演示數(shù)據(jù)庫Employees表。 矩陣模板如下所示:
在值為2的單元格中,我們添加了一個(gè)文本對(duì)象。在其中,選擇Employees.LastName字段。這正是我們上面所說的“static”字段。
為矩陣創(chuàng)建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 } }
從評(píng)論中可以清楚地看到,當(dāng)您添加數(shù)據(jù)字符串時(shí),我們定義了Phone的標(biāo)題。然后我們按順序插入數(shù)據(jù):城市,名稱和電話。而且,我們需要傳輸數(shù)據(jù)行號(hào)以插入當(dāng)前數(shù)據(jù)記錄中的姓氏。 現(xiàn)在運(yùn)行報(bào)表:
如您所見,您可以使自己更容易,而不是在報(bào)表腳本中添加所有必要的數(shù)據(jù),而只需使用文本對(duì)象將它們放在矩陣模板中。