Dot-Net

動態設置 RDLC 報告中的圖像源

  • March 28, 2011

我正在使用與 Visual Studio 2010 捆綁在一起的客戶端報告功能。我定義了一個 RDLC 文件,目前在報告頂部帶有用於品牌推廣的嵌入圖像。圖像是使用者公司的標誌。它與報告數據無關……它只是一個標題。

我希望能夠打破對嵌入圖像的依賴,因為我開始不得不擴展應用程序。相反,我希望能夠動態設置圖像。不幸的是,似乎沒有參數類型支持這一點。

我已經研究過將源從嵌入式切換到外部,並可能在程序啟動時發出徽標的圖像文件(徽標作為資源嵌入到單獨的程序集中),然後將其稱為通用命名的文件資源。我不確定我有多喜歡這個選項,因為它似乎是一個黑客。在測試顯式設置的路徑圖像時,我也會遇到錯誤,實際上是說對象未設置為實例。例如,我什至嘗試將其設置為 D:\test.jpg,並在設計時收到該錯誤…所以我更不願意嘗試此選項。

我還查看了從 RDLC 文件中呼叫引用程序集中的類,但我似乎無法讓它工作。看起來我可以引用一個程序集,然後通過一個名為 Code 的特殊對象進行呼叫。因為我的類是靜態的,所以應該是 Code.className.method,但這似乎不起作用。

我也考慮過將標題分解為子報告,但我仍然認為我沒有解決我的依賴問題。它仍然需要相同數量的維護。

我應該提到我正在使用對像作為我的數據源。我應該選擇什麼?我錯過了一些明顯的東西嗎?

由於對此事沒有其他(或任何!)意見,我已經進一步前進並提出了一個可行的解決方案。

我選擇創建徽標的按需文件,將其儲存在臨時位置。如果該文件不存在,我將即時創建它。如果它確實存在,我只是在引用確實存在的圖像。

在 RDLC 報告中,我創建了一個名為 Path 類型為 Text 的參數。接下來,在圖像的屬性中,我將徽標圖像從嵌入更改為外部,並將“使用此圖像”設置為參數:[@Path]。

然後,在程式碼中,我將文件路徑作為 Path 參數傳遞。但是我之前出錯的地方是路徑必須是 URL,並且我一直試圖傳遞磁碟上的位置。因此,該部分應如下所示:

       ReportParameter paramLogo = new ReportParameter();
       paramLogo.Name = "Path";
       paramLogo.Values.Add(@"file:///C:\Users\Mike\AppData\Local\Temp\Logo.png");
       reportViewer.LocalReport.SetParameters(paramLogo);

我會說 MSDN 文件可能會更好一些。值得稱讚的是,有許多關於如何在更高層次上完成某事的詳細文件。這篇文章有所幫助。它清楚地表明我需要一個指向路徑的 URL,但是直接在庫中檢查該屬性會更容易。然而,找到較低級別的文件更難,也更沒有成效。這是報告圖像對象的文章。沒有太多機會設置感興趣的屬性。

引用自:https://stackoverflow.com/questions/5454972