ASP.NET - ReportViewer Control 使用心得 (二)

摘要:ASP.NET - ReportViewer Control 使用心得 (二)

錯誤更新於:2010 / 01 / 10 AM 01 : 11

上一篇<ASP.NET - ReportViewer Control 使用心得 (一)>是用一種很簡單的拖拉方式就可以設定完成,現在就再多加一點元素,那就是未報表加個參數,下面就來實作吧!!

資料來源:Northwind 的 dbo.Orders

步驟一:首先在 WebForm 中建立以下的畫面


步驟二:建立一個 DataSet 並且將 Orders 從 伺服器總管 拉進來


步驟三:對「Fill,GetData()」按右鍵選「設定」


步驟四:對 T-SQL 加入參數「@CustomerID」並按「下一步」


步驟五:這邊沒有甚麼想要特別設定的,直接按「下一步」

步驟六:按下「完成」,就設定完成了


步驟七:再拉一次 Orders 進來,這個主要是要給前端下拉式選單用的選單資料。拉進來之後修改 Table 的名稱「OrdersGroup」,這個資料主要是將 CustomerID 群組化,所以請修改這個 Table 的 T-SQL 語法,也就是在執行一次 步驟三 到 步驟六 一次



步驟八:建立一個報表,開始設計報表樣式,並且將 Orders 的欄位拉到 Report 的 Table 表格中


步驟九:設定前端頁面的資料來源,並且將 下拉選單 的 AutoPostBack 啟用




步驟十:建立 下拉式選單 的 SelectedIndexChanged 事件

Code:

using Microsoft.Reporting.WebForms;
using System.Data.SqlClient;
using System.Data;
using System.Web.Configuration;

...

protected void Page_Load(object sender, EventArgs e)
{
 ReportViewer1.Visible = false;
}

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
 DropDownList b = (DropDownList)sender;

 ObjectDataSource2.SelectParameters.Clear();

 ObjectDataSource2.SelectMethod = "GetData";

 ObjectDataSource2.SelectParameters.Add(new Parameter("CustomerID", DbType.String, b.SelectedValue));

 //將查詢出的 orders 資料表資料提供給 DataSet2_Orders
 ReportDataSource rds = new ReportDataSource("DataSet2_Orders", ObjectDataSource2.ID);

 ReportViewer1.LocalReport.DataSources.Clear();

 //將 資料 新增到 ReportViewer1 的 DataSources
 ReportViewer1.LocalReport.DataSources.Add(rds);

 ReportViewer1.LocalReport.Refresh();
 
 ReportViewer1.Visible = true;
}

結果:




參考資料:
[C#]透過ReportViewer將報表另存成檔案
C# reportviewer
Difficulty setting ReportParameter
Using the WebForms ReportViewer Control