簡體   English   中英

創建包含多個表的rdlc報告(一對多關系)

[英]Creating an rdlc report with multiple tables (one-to-many relationship)

所以,我是rdlc的新手(並且實際上報道了)。 我有一個與另一個表有一對多關系的表,我試圖在rdlc報告中將它們表示為每個項目的多個表。

注意:這些表最初是使用Entity Framework代碼優先創建的

這是兩個表(和父

報價模型

現在,通常如果我只有[Quotation]和一些[QuotationItem] ,我只需要在報告頂部的[Quotation]添加信息,並且每個[QuotationItem]將在表格內的一行(Tablix)。

問題是 :每個[QuotationItem]有許多 [QuotationItemQuantity] (目前是三個),它們也需要表示。

所以,我的報告應該是這樣的:

報告

但我仍然堅持如何為每個項目(QuotationItem)顯示多個表(或列表和表)。 我在列表中嘗試了嵌套的表和表,但這似乎不被允許(我得到一個“詳細信息成員只能包含靜態內部成員”錯誤)。

我讀到了關於子報告的內容,我認為這可能是要走的路,但我不確定如何在這種情況下使用子報告,或者這是否是正確的方法。

注意:如上所述,每個QuotationItem當前有3個數量,但將來可能會更改,因此如果列可以是動態的,那么這將是很好的,但是,此時這不是必需的。

有什么建議?

好吧,我希望(現在仍然)能夠獲得一個更優雅的解決方案, 而不是這個丑陋的解決方案(我現在必須使用它),但無論如何它都應該做到了。

我發布它,因為它可能會幫助有類似問題的人。 這是我做的:

准備數據:

  • 使用VS設計器創建了一個虛擬DataSet,並向其添加了一個DataTable。
  • 將兩個表中的所有必需列添加到此DataTable中。
  • 添加了DataSet作為報告的數據源。
  • 為了傳遞實際數據,我將使用與設計數據相同的結構填充DataTable 然后使用以下內容將其傳遞給報表:

     private void Form_Load(object sender, EventArgs e) { rptViewerMain.LocalReport.ReportEmbeddedResource = "MyProjectName.QuotationReport.rdlc"; rptViewerMain.LocalReport.EnableExternalImages = true; if (QuotationInfo !=null && QuotationItems != null) { SetupReport(); } this.rptViewerMain.RefreshReport(); } private void SetupReport() { var param1 = new ReportParameter("MyFirstParameter", SomeValue); var param2 = new ReportParameter("MySecondParameter", SomeOtherValue); // etc // Pass Parameters rptViewerMain.LocalReport.SetParameters(new[] { param1, param2, "etc" }); // Prepare the DataTable and add the values to it DataTable dt = new MyDummyDataset.MyDesignedDataTable().Clone(); foreach (var qItem in QuotationItems) { dt.Rows.Add(qItem.ItemNumber, qItem.ItemDescription, "and", "so", "many", "more", "values"); } // Pass the DataTable to the report as the data source replacing the dummy DataSet rptViewerMain.LocalReport.DataSources.Add(new ReportDataSource("MyDummyDataset", dt)); } 

設計報告:

  • 在RDLC報告中僅創建了一個表(Tablix),並使用單元格邊框使其看起來像3個表,方法是刪除“表”之間不需要的單元格的邊框 在此輸入圖像描述
  • 將虛擬DataSet中的字段添加到第一個表中的相應單元格(數量信息)和表格上方(引用項目信息)。
  • 對於第二個和第三個“表”,只需使用表達式根據第一個表中的值進行計算。

注意:某些字段/變量名稱在問題和答案中都已更改,但這個想法保持不變。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM