ReportViewer 在VS2010的使用方式(一)
作者:JB
因為專案需要,所以是第一次使用ReportViewer這個元件。
雖然比一般報表支援更多功能,至於好不好用,則見人見智了。
(不過BUG倒是不少 ~_~)
另外我是使用VS2010,Microsoft.ReportViewer.WebForms.dll 版本: v2.0.50727
( Namespace : Microsoft.Reporting.WebForms.ReportViewer )
1.
加入一支「index.aspx」並將其設定為起始頁面。
2.
建立資料模型
專案下新增一個Model資料夾,並在裡面加入任何資料模型。 因為是範例,所以我這邊加入一個回傳DataTable的Class,並手動產生一些資料。 (實際上你可以使用ADO.NET或EF模型…皆可)
public class Data
{
private const String COL_1 = "姓名";
private const String COL_2 = "性別";
private const String COL_3 = "電話號碼";
/// 取得資料
public DataTable Get()
{
DataTable dt = new DataTable();
dt.Columns.Add( new DataColumn( COL_1 ) );
dt.Columns.Add( new DataColumn( COL_2 ) );
dt.Columns.Add( new DataColumn( COL_3 ) );
///加入一些資料
for (int i = 0; i < 20; i++)
{
String simName = String.Format("JB{0}", i.ToString());
String simSex = (i%2 ==0) ? "男" :"女";
String simPhoneNum = "09XX-123-456";
DataRow dr = dt.NewRow();
dr[COL_1] = simName;
dr[COL_2] = simSex;
dr[COL_3] = simPhoneNum;
dt.Rows.Add(dr);
}
return dt;
}
專案下新增一個Model資料夾,並在裡面加入任何資料模型。 因為是範例,所以我這邊加入一個回傳DataTable的Class,並手動產生一些資料。 (實際上你可以使用ADO.NET或EF模型…皆可)
public class Data
{
private const String COL_1 = "姓名";
private const String COL_2 = "性別";
private const String COL_3 = "電話號碼";
/// 取得資料
public DataTable Get()
{
DataTable dt = new DataTable();
dt.Columns.Add( new DataColumn( COL_1 ) );
dt.Columns.Add( new DataColumn( COL_2 ) );
dt.Columns.Add( new DataColumn( COL_3 ) );
///加入一些資料
for (int i = 0; i < 20; i++)
{
String simName = String.Format("JB{0}", i.ToString());
String simSex = (i%2 ==0) ? "男" :"女";
String simPhoneNum = "09XX-123-456";
DataRow dr = dt.NewRow();
dr[COL_1] = simName;
dr[COL_2] = simSex;
dr[COL_3] = simPhoneNum;
dt.Rows.Add(dr);
}
return dt;
}
請從報表精靈設定Rdlc報表的資料集屬性~
※名稱: 請自行設定(稍後會使用到)
※資料來源:
如果您有設定資料模型,這裡就會列出資料模型的名稱。
此範例則顯示本專案名稱。 另外也可以在這邊直接點選【新增】加入一個新的資料庫模型。
※可用資料集:資料模型下的資料集或資料表名稱。
設定好之後,右邊會顯示欄位名稱和型別。
選擇可用的欄位。 另外也可以在這邊設定要做群組的資料列或資料行,或是稍後設定。
最後會顯示預覽和樣式選擇,完成報表精靈。
4.
ReportViewer
建好報表後,接下來終於換主角登場。 請在index.aspx放上去一個ReportViewer。
另外因為ReportViewer必須搭配ajax,所以請在網頁上加入一個ScriptManager的宣告,否則在執行階段會馬上出現錯誤:「報表檢視器 Web 控制項需要 Web Form 上的 System.Web.UI.ScriptManager」。
點選ReportViewer右上角的設定,選擇報表為剛才新增的Rdlc報表。
JB這時候直接執行, 出現以下錯誤訊息。 原來是我們剛才的步驟都僅止於設定Rdlc報表、ReportViewer的欄位,至於實際上的資料怎麼進來,還需要另行設計 lol
建好報表後,接下來終於換主角登場。 請在index.aspx放上去一個ReportViewer。
另外因為ReportViewer必須搭配ajax,所以請在網頁上加入一個ScriptManager的宣告,否則在執行階段會馬上出現錯誤:「報表檢視器 Web 控制項需要 Web Form 上的 System.Web.UI.ScriptManager」。
點選ReportViewer右上角的設定,選擇報表為剛才新增的Rdlc報表。
JB這時候直接執行, 出現以下錯誤訊息。 原來是我們剛才的步驟都僅止於設定Rdlc報表、ReportViewer的欄位,至於實際上的資料怎麼進來,還需要另行設計 lol
5.
ObjectDataSource
上面提到ReporViewer的資料來源要另行設計,這個關鍵就是要建立「ObjectDataSource」, 剛才你可能發現了,可以直接在ReportViewer上面直接建立一個ObjectDataSource。 如下圖 …
資料來源類型請選擇「物件」
選擇SELECT的方法
到這邊就大功造成,可以直接執行來看結果吧!
上面提到ReporViewer的資料來源要另行設計,這個關鍵就是要建立「ObjectDataSource」, 剛才你可能發現了,可以直接在ReportViewer上面直接建立一個ObjectDataSource。 如下圖 …
資料來源類型請選擇「物件」
選擇SELECT的方法
到這邊就大功造成,可以直接執行來看結果吧!
6.
最後,我們再來複習一下,整個建立ReportViewer的步驟:
u 建立資料模型
u 建立Rdlc報表
u 建立ReportViewer並設定來源報表
u 由ReportViewer建立DataSource來源
7.
Reference
ReportViewer in Visual Studio 2010 使用固定分頁,每X筆資料就分頁
ASP.NET - REPORTVIEWER CONTROL 使用心得 (二)
[ASP.NET]利用ReportViewer2005匯出Excel並含多工作表
設定Tablix的RepetaterColumnHeaders為True,仍無法在每一頁重複標頭資料行的變通作法
常見以程式方式透過ReportViewer來顯示報表的錯誤排除
ReportViewer in Visual Studio 2010 使用固定分頁,每X筆資料就分頁
ASP.NET - REPORTVIEWER CONTROL 使用心得 (二)
[ASP.NET]利用ReportViewer2005匯出Excel並含多工作表
設定Tablix的RepetaterColumnHeaders為True,仍無法在每一頁重複標頭資料行的變通作法
常見以程式方式透過ReportViewer來顯示報表的錯誤排除
沒有留言:
張貼留言