原創|使用教程|編輯:鄭恭琳|2020-01-16 11:45:20.980|閱讀 249 次
概述:有時,您的工作需要一份相同的報表,但有一些更改。例如,不同部門的標題不同。本文就讓我們在FastReport.Net中實現這樣的報表。您可以生成相同的報表,并為標頭傳遞不同的參數。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
有時,您的工作需要一份相同的報表,但有一些更改。例如,不同部門的標題不同。例如,ActiveReports報表生成器的用戶想要創建這樣的報表:
例如,用戶選擇客戶和管理部門的副本。
該應用程序創建相同的報表,但是每個報表的標題中都有一個標簽,其中顯示了“Copy for the customer”為客戶復制、“Copy for the administration department”為管理部門復制之類的內容。
之后,應用程序必須在表單查看器中顯示兩個頁面。
讓我們在FastReport.Net中實現這樣的報表。您可以生成相同的報表,并為標頭傳遞不同的參數。但是,如果您希望在一個報表中收到標題不同的類似報表,則可以執行其他操作。我們可以復制原始報表的頁面,然后在這些頁面中修改標題。最簡單的方法是在報表上顯示一頁。
該報表將具有一個參數,該參數列出您要通過逗號顯示在該報表中的標題的數量。在報表腳本中,我們根據設置中的值數來復制頁面,然后將新頁面標題中的文本替換為所需的文本。
通過這種方式,我們可以根據所傳送的號碼形成具有不同標題的頁面。但是,有一個困難。您必須手動計算要在其中替換文本的文本對象的數量。例如,我的報表中有9個文本對象。首先是標題。因此,第十個也是標題,但在新頁面上。如果您再添加9到10,我們將在第三頁上獲得標題編號,依此類推。
當您編寫腳本代碼時,它將變得更加清晰:
private void _StartReport(object sender, EventArgs e) { //Parse parameter string parameter = (string)Report.GetParameterValue("Parameter"); string[] arr = parameter.Split(','); //Number of text obj that is header int step = 10; foreach (string item in arr) { ReportPage newPage = new ReportPage(); newPage.AssignAll(Page1); Report.Pages.Add(newPage); newPage.CreateUniqueName(); foreach (object obj in newPage.AllObjects) { if (obj is Base) { (obj as Base).CreateUniqueName(); } } TextObject txt = Report.FindObject("Text"+ step.ToString()) as TextObject; switch (item) { case "1": txt.Text = "Header 1"; break; case "2": txt.Text = "Header 2"; break; case "3": txt.Text = "Header 3"; break; } step = step + 9; } Report.Pages.Remove(Page1); }
讓我們仔細看看這個腳本。我們在Report對象上使用了StartReport事件。在事件處理程序中,我們將處理報表頁面。該報表已經開發了一頁——實際上,它是一個現成的“combat”戰斗報表,在此基礎上,我們想制作幾篇,但標題不同。
首先,我們解析一個報表參數。如前所述,參數以我們要顯示的序列標識符模式傳遞。標識符以逗號分隔。接下來,迭代從報表中獲得的循環參數ID。對于它們中的每一個,都基于帶有標題的現有文本對象創建一個頁面。根據文本對象的標題模板設置標識符。一旦我們建立了一個“pack”包裝所需的頁面,請刪除示例的第一頁。
結果,我們在一個報表中獲得了多個報表。這些報表頁面的受控數量可能會傳入報表參數值——所需的標識符或標頭組合。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn