翻譯|使用教程|編輯:楊鵬連|2021-04-01 11:39:23.180|閱讀 216 次
概述:有時需要在另一個報告中使用一部分報告。在簡單的情況下,您可以使用報表繼承來執(zhí)行此操作。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
FastReport .Net是適用于Windows Forms,ASP.NET,MVC和.NET Core的全功能解決方案。它可以在Microsoft Visual Studio 2005-2019中使用。支持.Net Framework 2.0-4.x,.NET Core 3.0及以上版本。
在FastReport .NET 2021.1的新版本中,我們實(shí)現(xiàn)了對.NET 5的支持。添加了新條形碼-Deutsce Post Leitcode。將RTF轉(zhuǎn)換為報告對象的算法已得到顯著改進(jìn)。并且還添加了用于轉(zhuǎn)換數(shù)字的新功能。歡迎下載體驗(yàn)。(點(diǎn)擊下方按鈕下載)
立即點(diǎn)擊下載FastReport.NET v2021.1最新版
Fastreport.NET在線購買價更低,專享85折起!趕緊加入購物清單吧!
有時需要在另一個報告中使用一部分報告。在簡單的情況下,您可以使用報表繼承來執(zhí)行此操作。
例如,在某些情況下,所有報告都有共同的元素(公司徽標(biāo),簽名等)。然后,可以將這些對象移至父報表,并在創(chuàng)建子報表時將其自動復(fù)制。因此,您無需每次都手動復(fù)制它們,從而大大簡化并加速了新報告的創(chuàng)建。此外,如果您更改了父報表中的某些內(nèi)容,這些更改也將反映在所有子報表中。
但是,報告繼承有許多限制。在某些情況下,一個報告只有一個“父”報告,而使一個“父”報告成為完全不同的報告變得很有必要。似乎可以更改BaseReport屬性,但不幸的是,它無法解決。
但是,可以通過一種奇妙的方式解決此問題-通過將一個報告代碼中的帶替換為另一個報告中的帶。
假設(shè)有一個基準(zhǔn)報告(base.frx),并且需要將其范圍復(fù)制到子報告(child.frx)。您需要用“ Data1”名稱替換PageHeader,PageFooter和DataBand。以下代碼示例假定兩個報告都位于C驅(qū)動器的根文件夾中。
首先,您需要下載兩個報告:
Report base = new Report(); base.Load(@"C:\base.frx"); Report child = new Report(); child.Load(@"C:\child.frx");下一步是從兩個報告中獲取頁面。知道頁面名稱很重要。下面的示例假定兩個報告中的頁面名稱均為“ Page1”:
ReportPage basePage = base.FindObject("Page1") as ReportPage; ReportPage childPage = child.FindObject("Page1") as ReportPage;如果您不知道頁面名稱,則可以從索引中獲取它們。例如,進(jìn)一步,我們可以訪問兩個報告的第一頁:
ReportPage basePage = baseReport.Pages[0] as ReportPage; ReportPage childPage = childReport.Pages[0] as ReportPage;這兩個選項(xiàng)都是合適的,并且會導(dǎo)致相同的結(jié)果。
現(xiàn)在,您可以替換PageHeader和 PageFooter。很簡單:
childPage.PageHeader = basePage.PageHeader; childPage.PageFooter = basePage.PageFooter;這些行復(fù)制具有所有屬性和設(shè)置的兩個波段。此外,位于它們上面的所有對象都將被復(fù)制,并且屬性不會丟失。
接下來,將DataBand替換為“ Data1”名稱:
DataBand baseBand = basePage.FindObject("Data1") as DataBand; DataBand childBand = childPage.FindObject("Data1") as DataBand; // необходимо получить индекс Data1 в дочернем отчете int childBandIndex = childPage.Bands.IndexOf(childBand); // теперь его можно удалить childPage.Bands.Remove(childBand); // и вставить на его место бэнд из базового отчета childPage.Bands.Insert(bandIndex, baseBand);最后,將復(fù)制具有所有屬性和子對象的波段,并傳輸與負(fù)責(zé)DataSource屬性的數(shù)據(jù)源的綁定。沒有此綁定,波段將無法正常工作,也不會從數(shù)據(jù)庫輸出數(shù)據(jù)。
我們只需要復(fù)制數(shù)據(jù)源。可以使用以下代碼段完成此操作:
for (int i = 0; i < baseReport.Dictionary.DataSources.Count; i++) { childReport.Dictionary.DataSources.Add(baseReport.Dictionary.DataSources[i]); }因此,所有數(shù)據(jù)源均已復(fù)制。如果沒有必要,則只能克隆所需的克隆。
而已。幾十行代碼行使將帶和對象從一個報告復(fù)制到另一個報告成為可能。如果樂隊(duì)中有很多對象,那么與設(shè)計(jì)師復(fù)制它們會很漫長而乏味,并且從頭開始創(chuàng)建它們會花費(fèi)更長的時間。
當(dāng)然,如果在此示例中基線報告僅復(fù)制了條帶,則可以通過簡單地復(fù)制和粘貼報告文件來更輕松地執(zhí)行此任務(wù)。撇開笑話,您可以在不需要新報告中所有波段的情況下,使用此方法從一個集合中復(fù)制一個或多個波段。或者,您可以從一個報表中獲取頁眉,從另一個報表中獲取數(shù)據(jù)帶,并從第三個報表中獲取頁腳。
還想要更多嗎?您可以點(diǎn)擊閱讀【FastReport 報表2020最新資源盤點(diǎn)】,查找需要的教程資源。讓人興奮的是FastReport .NET正在慧都網(wǎng)火熱銷售中!低至3701元起!>>查看價格詳情
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自: