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