xtrareports-402961-feature-guide-to-devexpress-reports-use-report-parameters-specify-parameter-values.md
Use the Parameters Panel to specify parameter values in the Visual Studio Report Designer:
To specify a value for a report parameter in code, reference the parameter by name in the report’s Parameters collection and assign the value to the parameter’s Value property.
using System;
// ...
// Create a report instance.
XtraReport1 report = new XtraReport1();
// Reference a parameter by name in the report's Parameters
// collection and assign a value to the parameter's Value property.
report.Parameters["parameter1"].Value = 30;
Imports System
' ...
' Create a report instance.
Private report As New XtraReport1()
' Reference a parameter by name in the report's Parameters
' collection and assign a value to the parameter's Value property.
Private report.Parameters("parameter1").Value = 30
Specify the parameter’s value before you generate the report’s document (call the CreateDocument() method) or invoke the report’s Print Preview.
You can also update the parameter’s value in the report’s BeforePrint event handler:
private void XtraReport1_BeforePrint(object sender, System.ComponentModel.EventArgs e) {
(sender as XtraReport1).Parameters["parameter1"].Value = 42;
}
Private Sub XtraReport1_BeforePrint(ByVal sender As Object, ByVal e As System.ComponentModel.EventArgs)
TryCast(sender, XtraReport1).Parameters("parameter1").Value = 42
End Sub
If a report parameter’s Value property is set to an expression, assigning a static value to this property in code has no effect. When you open the report Preview , the expression value is displayed instead of the assigned static value.
If you want to change the default expression value to a static value in code, remove the expression from the parameter’s ExpressionBindings collection and then assign the static value to the parameter’s Value property:
using DevExpress.XtraReports.UI;
using System;
using System.Linq;
// ...
var report = new XtraReport();
report.LoadLayoutFromXml("../Path/To/Report.repx");
var paramName = "date";
var parameter = report.Parameters[paramName];
var paramValueExpression = parameter.ExpressionBindings
.FirstOrDefault(p => p.PropertyName == "Value");
// Remove an expression from the report's ExpressionBindings collection.
if (paramValueExpression != null) {
parameter.ExpressionBindings.Remove(paramValueExpression);
}
// Assign a static value to the parameter's Value property.
report.Parameters[paramName].Value = DateTime.Parse("02/05/2022");
Imports DevExpress.XtraReports.UI
Imports System
Imports System.Linq
'...
Private report = New XtraReport()
report.LoadLayoutFromXml("../Path/To/Report.repx")
Dim paramName = "date"
Dim parameter = report.Parameters(paramName)
Dim paramValueExpression = parameter.ExpressionBindings.FirstOrDefault(Function(p) p.PropertyName = "Value")
' Remove an expression from the report's ExpressionBindings collection.
If paramValueExpression IsNot Nothing Then
parameter.ExpressionBindings.Remove(paramValueExpression)
End If
' Assign a static value to the parameter's Value property.
report.Parameters(paramName).Value = DateTime.Parse("02/05/2022")
Range parameters have a different structure from other parameters. An expression for the parameter value is not assigned to the range parameter itself. Instead, it is assigned to its child parameters accessible by the RangeParametersSettings class properties:
using DevExpress.XtraReports.Parameters;
using DevExpress.XtraReports.UI;
using System;
using System.Linq;
// ...
static void AssignRangeParameters(XtraReport report, DateTime startDate, DateTime endDate) {
var paramName = "dateRange";
var parameter = report.Parameters[paramName];
if (parameter.ValueSourceSettings is RangeParametersSettings rangeSettings) {
ClearValueExpression(rangeSettings.StartParameter);
ClearValueExpression(rangeSettings.EndParameter);
}
parameter.Value = new Range<DateTime>(startDate, endDate);
}
static void ClearValueExpression(Parameter parameter) {
var paramValueExpression = parameter.ExpressionBindings
.FirstOrDefault(p => p.PropertyName == "Value");
// Remove an expression from the report's ExpressionBindings collection.
if (paramValueExpression != null) {
parameter.ExpressionBindings.Remove(paramValueExpression);
}
}
Imports DevExpress.XtraReports.Parameters
Imports DevExpress.XtraReports.UI
Imports System
Imports System.Linq
' ...
Shared Sub AssignRangeParameters(ByVal report As XtraReport, ByVal startDate As Date, ByVal endDate As Date)
Dim paramName = "dateRange"
Dim parameter = report.Parameters(paramName)
If TypeOf parameter.ValueSourceSettings Is RangeParametersSettings rangeSettings Then
ClearValueExpression(rangeSettings.StartParameter)
ClearValueExpression(rangeSettings.EndParameter)
End If
parameter.Value = New Range(Of Date)(startDate, endDate)
End Sub
Shared Sub ClearValueExpression(ByVal parameter As Parameter)
Dim paramValueExpression = parameter.ExpressionBindings.FirstOrDefault(Function(p) p.PropertyName = "Value")
' Remove an expression from the report's ExpressionBindings collection.
If paramValueExpression IsNot Nothing Then
parameter.ExpressionBindings.Remove(paramValueExpression)
End If
End Sub
Refer to the following topics for details: