上一篇示範用 UI 設定 DataSet 做為客戶端報表 (RDLC) 資料來源。本篇進一步說明如何透過程式碼定義強型別類別作為資料來源,提升彈性與型別安全。
假設報表需顯示「員工銷售彙總」,欄位包含 EmpID (int)、EmpName (string)、TotalSales (decimal)。先前在 SSRS 專案中已定義對應 DataSet 結構。
SalesSummary.cs。public class SalesSummary
{
public int EmpID { get; set; }
public string EmpName { get; set; }
public decimal TotalSales { get; set; }
}
.rdlc 設計師,Report Data 面板右鍵 → Add New Data Source → 選 Object。SalesSummary 類別,完成精靈。DataSetName 設為新建立的 Object DataSource。protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
// 1. 從資料庫查詢或計算取得資料
var data = GetSalesSummaryFromDB(); // 回傳 List
// 2. 設定 ReportViewer
ReportViewer1.ProcessingMode = ProcessingMode.Local;
ReportViewer1.LocalReport.ReportPath = Server.MapPath("~/Reports/SalesSummary.rdlc");
// 3. 建立 ReportDataSource 繫結
var rds = new ReportDataSource("SalesSummaryDataSet", data); // 名稱需與報表 DataSet 名稱一致
ReportViewer1.LocalReport.DataSources.Clear();
ReportViewer1.LocalReport.DataSources.Add(rds);
ReportViewer1.LocalReport.Refresh();
}
}