OEA 架構中整合的 RDLC 報表介紹

來源:互聯網
上載者:User

之前 OEA 一直用著一個 Delphi 開發的報表,所以兩年來我一直就想在 OEA 中構建一個純 .NET 的報表模組,但是一想到要開發複雜的報表引擎和設計器就覺得麻煩。所以這事一直拖著。最近開始研究一些成熟的報表引擎,經過對比,還是發現微軟的 RLDC 報表已經能滿足我大多數需求。其中包括表格、矩陣、圖表 等複雜控制項,同時同樣的報表格式在 B/S 模式下也可以直接使用,最新的 Tablix 控制項非常靈活,能實現大多數表格樣式。所以我決定不再費時費力去造一個輪子,而是直接把微軟的 RDLC 報表整合進來。最終整合到 OEA 中,只花了不到一周的時間。雖然現在還處在第一版,沒有給客戶使用的設計器。不過就目前的開發效率來看,開發人員開發一個報表,速度已經比較快了。

 

接下來,我就基於之前已經發布的進銷存樣本項目(JXC),來示範一下,基於 OEA 架構,是如何開發一個報表模組的。

 

報表開發樣本

 

第一步,我們需要開發一個一般的列表模組。

這樣,可以在使用報表前把後台資料相關的實體、資料層代碼都開發完成,並檢驗資料是否正確。這一部分的內容與報表無關,我就直接使用 JXC 之前的單據查詢模組中採購入庫單介面:

把這個頁簽的代碼拷貝成一個新的頁簽,

紅線中代碼是直接拷貝上一行並修改了顯示名稱,此時效果如下:

此時,就算已經完成了一個全新的列表查詢結果介面的開發。那麼,我們如何把這個傳統的列表介面轉換為報表顯示介面呢?

 

 

第二步,在彙總塊申明中,這個介面塊申明為報表介面塊,代碼如下:

new SurrounderBlock(typeof(OrderStorageInBill), QueryObjectView.ResultSurrounderType){    KeyLabel = "採購入庫單 - 報表",    BlockType = BlockType.Report},

然後為 OrderStorageInBill 類對應的這個視圖配置中,申明需要使用的報表名稱(該名稱在系統所有報表名稱中必須是唯一的)。如下:

internal class OrderStorageInBillConfig : EntityConfig<OrderStorageInBill>{    protected override void ConfigView()    {        View.UseReport("採購入庫單報表統計.rdlc");

再次開啟介面,我們會發現該頁簽對應的介面塊,已經變成了一個報表介面,並同時帶上了報表介面的兩個重要功能:“重新整理 RDLC 欄位”及“報表資料”。

到此,所有的代碼已經完成,接下來的過程也不再需要關閉程式或者重新編譯。

 

第三步,可以開始設計報表了。

注意到,由於到現在還沒有建立並設計 RDLC 報表檔案,所以中的報表顯示控制項所有按鈕都是停用。點擊“重新整理 RDLC 欄位”按鈕,彈出以下介面:

點擊確定後,架構自動產生相關的 RDLC 檔案到指定目錄(該目錄可在設定檔中進行配置),重新整理報表顯示控制項,並彈出如下提示:

點擊確定,可把該路徑拷貝到剪貼簿中。

注意到,此時報表控制項的按鈕已經可用,說明相應的 RDLC 檔案已經產生:

所以我們需要使用設計器對其進行設計,由於目前還沒有開發單獨的 RDLC 設計器,所以暫時用 VS2012 進行設計。在 VS 中直接開啟該檔案(路徑已經在剪貼簿中了),VS 將啟動對應的報表設計介面:

架構在產生此檔案時,已經自動產生了相關的資料來源節點(本樣本中只有一個簡單的實體資料來源,更多的資料來源可以使用代碼設定),而且這些欄位的名稱已經帶上了介面顯示的中文名稱,方便報表設計。

所以我們接下來只需要對這些資料進行報表設計即可,如何設計 RDLC 報表的內容,網上有較多內容,這是我最後設計出來的報表:

剛才說到在設計過程中是不需要關閉程式的,在對 RDLC 檔案進行任何修改並儲存後,可以點擊報表控制項上的重新整理按鈕,即可直接預覽當前效果。這是最終產生的報表介面:

另外,設計過程中,也可以點擊“報表資料”按鈕查看當前報表背後顯示的列表資料,方便理解後台資料。

 

 

在以後的時間裡,我可能還需要想辦法搞一個 RDLC 的設計器方便客戶使用。這也是個麻煩事……

不過整合報表這個心結有兩年時間了,現在總算是大致解決,可以在 OEA 中比較快地開發報表了,可喜可賀! 

 

 

附:RDLC 資料繫結類型定義圖

 

補充:沒有安裝 VS2012 的電腦,需要安裝 http://www.microsoft.com/en-us/download/details.aspx?id=27230
 ReportViewer 控制項後才能查看報表,直接拷貝 dll 到 Debug 目錄下不行,誰知道原因?

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.