首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

RDLC 報表實戰系列(三):參數傳遞、內建變數與常用運算式大全

     編輯:關於.NET

報表開發中,經常需要從 ASP.NET 傳入動態參數、使用報表內建變數(頁碼、總頁數、執行時間等),以及靈活運用運算式格式化資料。本文系統整理這三大核心技能。

一、ASP.NET 傳遞參數至 RDLC

報表端設計

  1. 報表設計介面 → 右鍵選單 Report Parameters... → 新增參數(名稱、型別、允許 Null)。
  2. 拖入 TextBox → 右鍵 Expression... → Categories 選 Parameters → 雙擊參數名稱插入。

報表參數設定對話框

後端代碼

protected void ButtonReportGenerate_Click(object sender, EventArgs e) {
    var reportDataSources = new List<ReportDataSource>();
    var ds = new RportDataSet();
    // ... 填充資料集 ...

    var parameterList = new List<ReportParameter>();
    // 關鍵:參數名稱必須與報表定義完全一致
    parameterList.Add(new ReportParameter("Parameter1", "This is a parameter from code"));
    // 多參數:parameterList.Add(new ReportParameter("Param2", "Value2"));

    GetReportMultipleDataSourceFile(reportDataSources, "ReportTemplate/LogReport.rdlc", parameterList, "pdf");
}

參數顯示效果圖

二、RDLC 內建變數與常用常量

位於 Expression 視窗的 Globals 類別下:

變數說明範例運算式
PageNumber當前頁碼="目前頁次: " & Globals!PageNumber.ToString()
TotalPages總頁數="共 " & Globals!TotalPages.ToString() & " 頁"
ExecutionTime報表產生時間=Globals!ExecutionTime.ToString("yyyy/MM/dd HH:mm:ss")
ReportName報表名稱=Globals!ReportName
ReportFolder報表檔案路徑=Globals!ReportFolder
UserID執行使用者=Globals!UserID
Language系統語言=Globals!Language

實用技巧:資料列自動編號

在 Table 明細列新增欄位,運算式設為:

=RowNumber("YourDataSetName")

其中 YourDataSetName 為 Table 綁定的資料集名稱(可在 Table Properties → DataSetName 查看)。

三、常用運算式速查表

需求運算式範例說明
字串串聯(同行)=Fields!FirstName.Value + Fields!LastName.Value或使用 & 運算子
字串串聯(換行)=Fields!FirstName.Value & vbCrLf & Fields!LastName.ValueTextBox 需設定 CanGrow=True
條件判斷=IIF(Fields!LineTotal.Value > 100, "高額", "一般")真/假可回傳任意運算式
資料列計數=Count(Fields!DAILYCOUNT.Value, "DataSetName")指定資料集範圍
數值加總=Sum(Fields!DAILYCOUNT.Value, "DataSetName")同理指定範圍
日期格式化=CDate(Fields!TOPAINTDATE.Value).ToString("dd MMM yyyy")如 01 Jan 2024
條件格式(背景色)=IIF(Fields!Status.Value="完成", "LightGreen", "White")套用於 TextBox BackgroundColor 屬性
隱藏零值=IIF(Fields!Amount.Value=0, "", Fields!Amount.Value)避免顯示多餘 0

四、進階運算式技巧

1. 群組小計與總計

=Sum(Fields!Amount.Value, "GroupName")  // 群組內小計
=Sum(Fields!Amount.Value, "DataSetName") // 全域總計

2. 交替列顏色

=IIF(RowNumber(Nothing) Mod 2 = 0, "Gainsboro", "White")

3. 多值參數處理

=Join(Parameters!MultiParam.Value, ", ")  // 將陣列參數轉為逗號分隔字串

4. 自訂代碼

報表屬性 → Code 頁籤撰寫 VB 函數,運算式中呼叫:=Code.MyFunction(Fields!Value.Value)

總結

  • 參數傳遞:報表定義參數 → 後端 ReportParameter 集合賦值 → 運算式引用 Parameters!ParamName.Value
  • 內建變數:Globals 集合提供頁碼、時間、用戶等上下文資訊
  • 運算式:採 VB 語法,支援條件、格式化、聚合、自訂代碼,是報表動態呈現的核心引擎

善用運算式可大幅減少後端代碼邏輯,將呈現邏輯封裝於報表模板內,符合關注點分離原則。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved