首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SSRS 入門(六):客戶端報表進階——以程式碼動態繫結資料來源

     編輯:關於SqlServer

上一篇示範用 UI 設定 DataSet 做為客戶端報表 (RDLC) 資料來源。本篇進一步說明如何透過程式碼定義強型別類別作為資料來源,提升彈性與型別安全。

情境回顧

假設報表需顯示「員工銷售彙總」,欄位包含 EmpID (int)、EmpName (string)、TotalSales (decimal)。先前在 SSRS 專案中已定義對應 DataSet 結構。

報表 DataSet 結構

建立強型別資料實體類別

  1. 在 ASP.NET 專案右鍵 → Add → New Item → Class,命名 SalesSummary.cs。
  2. 定義屬性對應報表欄位:
public class SalesSummary
{
    public int EmpID { get; set; }
    public string EmpName { get; set; }
    public decimal TotalSales { get; set; }
}
新增類別對話框 類別程式碼編輯器

報表端設定 Object DataSource

  1. 開啟 .rdlc 設計師,Report Data 面板右鍵 → Add New Data Source → 選 Object。
  2. 選取專案中的 SalesSummary 類別,完成精靈。
  3. 將報表資料表/清單的 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();
    }
}

優勢總結

  • 型別安全:編譯期即可發現欄位名稱拼寫錯誤。
  • 解耦報表與資料庫:報表只認類別,資料來源可換成 Web API、Entity Framework、記憶體運算結果等。
  • 利於單元測試:可直接餵入 Mock 資料驗證報表版面。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved