如何使用不同的標(biāo)題制作相同的報表頁面
有時,您的工作需要一份相同的報表,但有一些更改。例如,不同部門的標(biāo)題不同。例如,ActiveReports報表生成器的用戶想要創(chuàng)建這樣的報表:
例如,用戶選擇客戶和管理部門的副本。
該應(yīng)用程序創(chuàng)建相同的報表,但是每個報表的標(biāo)題中都有一個標(biāo)簽,其中顯示了“Copy for the customer”為客戶復(fù)制、“Copy for the administration department”為管理部門復(fù)制之類的內(nèi)容。
之后,應(yīng)用程序必須在表單查看器中顯示兩個頁面。
讓我們在FastReport.Net中實現(xiàn)這樣的報表。您可以生成相同的報表,并為標(biāo)頭傳遞不同的參數(shù)。但是,如果您希望在一個報表中收到標(biāo)題不同的類似報表,則可以執(zhí)行其他操作。我們可以復(fù)制原始報表的頁面,然后在這些頁面中修改標(biāo)題。最簡單的方法是在報表上顯示一頁。
該報表將具有一個參數(shù),該參數(shù)列出您要通過逗號顯示在該報表中的標(biāo)題的數(shù)量。在報表腳本中,我們根據(jù)設(shè)置中的值數(shù)來復(fù)制頁面,然后將新頁面標(biāo)題中的文本替換為所需的文本。
通過這種方式,我們可以根據(jù)所傳送的號碼形成具有不同標(biāo)題的頁面。但是,有一個困難。您必須手動計算要在其中替換文本的文本對象的數(shù)量。例如,我的報表中有9個文本對象。首先是標(biāo)題。因此,第十個也是標(biāo)題,但在新頁面上。如果您再添加9到10,我們將在第三頁上獲得標(biāo)題編號,依此類推。
當(dāng)您編寫腳本代碼時,它將變得更加清晰:
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); }
讓我們仔細(xì)看看這個腳本。我們在Report對象上使用了StartReport事件。在事件處理程序中,我們將處理報表頁面。該報表已經(jīng)開發(fā)了一頁——實際上,它是一個現(xiàn)成的“combat”戰(zhàn)斗報表,在此基礎(chǔ)上,我們想制作幾篇,但標(biāo)題不同。
首先,我們解析一個報表參數(shù)。如前所述,參數(shù)以我們要顯示的序列標(biāo)識符模式傳遞。標(biāo)識符以逗號分隔。接下來,迭代從報表中獲得的循環(huán)參數(shù)ID。對于它們中的每一個,都基于帶有標(biāo)題的現(xiàn)有文本對象創(chuàng)建一個頁面。根據(jù)文本對象的標(biāo)題模板設(shè)置標(biāo)識符。一旦我們建立了一個“pack”包裝所需的頁面,請刪除示例的第一頁。
結(jié)果,我們在一個報表中獲得了多個報表。這些報表頁面的受控數(shù)量可能會傳入報表參數(shù)值——所需的標(biāo)識符或標(biāo)頭組合。
產(chǎn)品介紹 | 下載試用 | 優(yōu)惠活動 | 在線客服