報表設計器可以使用表達式或標準數據綁定爲報表提供動態內容。
#表達式綁定
表達式綁定(默認模式)使您可以指定包含兩個或多個數據字段和各種功能的複雜表達式。您還可以使用表達式來計算任何複雜度的摘要,而無需編寫腳本,並有條件地調整數據的格式而無需設置格式規則。
將“屬性網格”切換到“ 表達式”選項卡,然後調用“ 表達式編輯器”來構造表達式。
該表達式編輯器允許您使用寬範圍的功能,獲得報告的頻帶和控制,並引用當前數據源值。
請注意,與標準綁定相比,此方法可以減慢複雜的計算。
#傳統數據綁定
數據綁定是早期報表版本使用的傳統方法。
此模式使您可以將單個數據字段分配給報表控件的綁定屬性。要提供自定義綁定邏輯,請處理具有安全隱患的報表腳本事件。
#綁定模式比較
#綁定到單個數據字段
-
控件的智能標記使您可以在相應的下拉列表中選擇目標數據字段。
表達式綁定
數據綁定
-
您可以選擇一個報表控件,並將其綁定到“屬性網格”中的數據。
表達式綁定
數據綁定
切換到“ 表達式”選項卡,然後爲“ 文本”屬性指定一個數據字段。
展開(數據綁定)類別,然後將數據字段分配給Text屬性。
有關更多信息,請參見將報表控件綁定到數據主題。
#綁定到多個數據字段
表達式綁定 |
數據綁定 |
---|---|
使用郵件合併功能。 單擊表達式屬性的省略號按鈕,然後指定表達式。 |
使用郵件合併功能。 |
#計算總結
表達式綁定 |
數據綁定 |
---|---|
在“ 表達式編輯器 ”的“ 摘要”部分中選擇摘要功能。 所有功能均帶有“ sum”前綴。 有關更多信息,請參見計算摘要。 |
在“ 摘要功能”下拉列表中選擇摘要功能。 有關更多信息,請參見計算摘要。 |
#複雜綁定,自定義摘要
表達式綁定 |
數據綁定 |
---|---|
使用表達式編輯器構造任何複雜的表達式。 有關示例,請參考計算高級摘要。 |
使用報告腳本。 有關示例,請參考計算自定義摘要。 |
#有條件地自定義外觀
表達式綁定 |
數據綁定 |
---|---|
使用表達式編輯器構造控件的外觀和樣式屬性的表達式。
有關示例,請參閱有條件地更改控件的外觀。 |
創建格式設置規則,並將其分配給報表控件。 有關示例,請參閱有條件地更改控件的外觀。 |
#設置綁定模式
指定靜態UserDesignerOptions.DataBindingMode屬性以選擇報表使用的綁定模式。您可以將此屬性設置爲以下DataBindingMode枚舉值:
-
這是默認的綁定模式。它使用受限的自定義選項(僅XRControl.BeforePrint事件可用)爲報表啓用表達式。
-
DataBindingMode.ExpressionsAdvanced
允許您在XRControl.BeforePrint和XRControl.PrintOnPage事件處理程序中提供表達式。表達式編輯器提供對變量部分中事件參數的訪問。
在設計時,可以使用“ 報表設計器選項”對話框在Visual Studio中設置DataBindingMode屬性。
注意
更改綁定模式後,重新加載報表設計器。
使用以下代碼指定最終用戶報表設計器的DataBindingMode屬性:
static class Program {
static void Main() {
DevExpress.XtraReports.Configuration.Settings.Default.UserDesignerOptions.DataBindingMode =
DevExpress.XtraReports.UI.DataBindingMode.ExpressionsAdvanced;
// ...
}
}
#將綁定轉換爲表達式
內置的自動報告轉換工具可幫助您轉換現有報告以使用新的綁定機制。該工具在以下情況下運行:
-
將靜態UserDesignerOptions.ConvertBindingsToExpressions屬性設置爲PromptBoolean.Prompt(默認值)並打開使用舊數據綁定的現有報表時,將出現轉換對話框。
單擊“ 是”以運行報告轉換。
-
當你設置報表轉換自動運行UserDesignerOptions.ConvertBindingsToExpressions屬性PromptBoolean.True。
在設計時,可以使用“ 報表設計器選項”對話框在Visual Studio中設置ConvertBindingsToExpressions屬性。
使用以下代碼指定最終用戶報表設計器的ConvertBindingsToExpressions屬性:
static class Program {
static void Main() {
DevExpress.XtraReports.Configuration.Settings.Default.UserDesignerOptions.ConvertBindingsToExpressions =
DevExpress.XtraReports.UI.PromptBoolean.True;
// ...
}
}
在以下情況下,您將無法轉換報告:
- 報表包含一個或多個控件,這些控件綁定到未分配爲報表數據源的數據源。
- 報告包含格式規則,其數據源與報告的數據源不同。
注意
無法將報表從表達式轉換回舊式綁定。