摘要: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