Grid++Report的幾點總結


一.同事解決方案:

1.在View文件夾下建立報表文件A,用來作為報表呈現的載體。這個頁面負責加載報表模板與加載數據源。其中報表模板由於后綴名為grf,在MVC中不做任何修改的情況下,系統會做路由處理,提示404錯誤,因此,同事將模板后綴名修改為jpg,得以順利調用。數據源加載,同事的思路是通過aspx頁面實現,具體來說,在aspx頁面中定義ViewData,在controller中對ViewData進行賦值,從而輸出view。總體上是利用了aspx頁面作為數據源呈現頁面,而利用Mvc的controller向這個呈現頁面填充數據實現為報表提供數據源。問同事為何不用cshtml頁面,答曰:會出錯。

二.優化方案:

首先將aspx頁面替換為cshtml頁面,也在其中定義ViewData,發現點擊報表頁面的查詢按鈕,頁面即報錯,IE崩潰。經過與原有頁面數據對比,發現原來是MVC將雙引號進行了轉義所致。因此,調用MVC自帶的Html.Raw方法,阻止其轉義。由此,將aspx頁面問題解決。

利用cshtml頁面,有兩種做法:

1.直接在cshtml頁面定義ViewData,在controller中返回View,但是此時返回的頁面是帶有母版頁的頁面,因此,必須在cshtml頁面中聲明,Layout=null。

2.在cshtml頁面中僅僅定義ViewData,不涉及Layout聲明。在Controller中直接返回PartialView即可。

關於模板文件的后綴名修改問題,更是簡單,在config中,將*.grf文件聲明為靜態文件即可。即添加以下代碼即可解決。

<add name="Static Report"  path="*.grf" verb="GET" type="System.Web.StaticFileHandler" />

 至此,將報表部分的開發順暢了許多,再也不用煩修改報表模板文件后綴名、aspx頁面等問題了。

 更新:

不使用數據源頁面及ViewData,直接通過API返回json數據更簡單。經過測試,完美無誤!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM