[VS2010 Online]New ReportViewer in Visual Studio 2010

[VS2010 Online]New ReportViewer in Visual Studio 2010

image

 

在 Visual Studio 2010 中,ReportViewer 也做了一個改版,版本號為10。

image

 

 

 

 

 

現在我們依照過去的習慣來建立一個報表試看看:

1.

拖拉一個ReportViewer控制項到畫面上(這邊我使用的是 Web Application 專案),然後

建立一個新的報表:

image

 

 

2.

出現與以往不一樣 UI 的報表精靈:

image

 

 

這裡我們新增一個 Data Source,設定完成後的畫面。畫面中列出你選擇的資料表

以及其欄位屬性。然後選擇下一步。

image

 

 

3.

很直覺式的設計方式,將所需欄位放到 Values 方格中,排列順序就是顯示順序。

也可以設定以數學運算的方式呈現。 Column 以及 Row 的群組設定也是以拖拉

方式處理,如果要移除欄位,則是直接按下 del 鍵刪除。

image

 

然後再按下一步。

 

4.

這裡可以做一些加總欄位的 Layout 設定。

image

 

 

5.

選擇Style。

image

 

 

6.

按下結束後的報表樣板顯示:

image

 

 

7.

底下會列出群組資料。

image

 

8.

設定 ReportViewer 的報表樣板來源。

image

 

9.

按下F5執行,你會發現出現了下列錯誤訊息:

The Report Viewer Web Control requires a System.Web.UI.ScriptManager on the web form」。

image

 

看起來,ReportViewer 跟 ScriptManager 已經變成好朋友了。

 

這樣的設計會造成什麼影響? 對,就是可以透過ASP.NET AJAX去觸發ReportViewer上的Toolbar

以及處理報表內容,而且也可以把 ReportViewer 放到 UpdatePanel 內了(過去按下按鈕會

Postback 的情況就不會出現了)。

 

10.

在畫面上新增一個 ScriptManager ,然後報表就可以順利執行了。

image

 

11.

在 Local Mode 下,匯出多了 WORD 格式可以選擇。

image


12.

另外,針對報表圖形的部分,也多了很多選擇:

image

 

 

也多了一個儀表板控制項可供使用:

image

 

 

一些貼心設計,像是

可以直接變更欄位:

image

 

屬性設定更加直覺:

image

 

以及在各個瀏覽器上的相容性,讓你在不同瀏覽器上都看到相同的報表內容。

 

 

在 ReportViewer 提供的屬性上,也增加很多設定,像是以往為人詬病的 Session Lost 問題,

現在可以透過 KeepSessionAlive 屬性設定來處理,要不要同步PostBack內容,也可以透過

InteractivityPostBackMode 設定,或是 ViewStateMode 決定要不要使用 ViewState。

 

 

在做完一些小測試後,筆者想到先前的 ReportViewer 的一個已知問題,我們來看看是不是已經被

解決了?

 

很簡單的重現步驟:

1. 在報表樣板中新增一條斜線:

image

 

2. 執行報表:(我的斜線呢?)

image

 

3. 匯出成PDF時又出現了。

image

 

 

很抱歉,革命尚未成功,同志仍須努力。

(這問題先前以為在 ReportViewer 2008 SP1 就會解決了)

 

這個問題有沒有得解? 可以透過下列 Workaround 來做處理:

1. 首先製作一個 .jpg 檔案:

2. 使用它來作為控制項底圖:

image

 

3. 這樣在 ReportViewer 上就可以看到那條斜線。

image

 

 

 

比較一下有無用圖的差異,使用圖片會導致報表會比較大。

image

 

 

 

 

雖然還是有些小問題,但是仍瑕不掩瑜。相信新版的 ReportViewer 可以帶給我們更方便的報表設計。

 

 

修練大會,我們下次見~

 

 

 

 

 

 

 

如果您有微軟技術開發的問題,可以到MSDN Forum發問。

如果您有微軟IT管理的問題,可以到TechNet Forum發問喔。