C# 如何从combobox将参数传递到devexpress XtraReport

C# 如何从combobox将参数传递到devexpress XtraReport,c#,devexpress,report,xtrareport,C#,Devexpress,Report,Xtrareport,我有一个表单,包含3个组合框和一个按钮,如下所示 以及一个包含3个绑定到richtext的参数的报告 我在单击“打印”按钮时使用了以下代码,但没有传递参数,richtext字段为空 private void btnPrint_Click(object sender, EventArgs e) { // Create a report instance. var report = new XtraReport1(); // Obtain a parameter, an

我有一个表单,包含3个组合框和一个按钮,如下所示

以及一个包含3个绑定到richtext的参数的报告

我在单击“打印”按钮时使用了以下代码,但没有传递参数,richtext字段为空

private void btnPrint_Click(object sender, EventArgs e)
{
    // Create a report instance.
    var report = new XtraReport1();

    // Obtain a parameter, and set its value.
    report.ClassName.Value    = cmbClass.SelectedText;
    report.SubclassName.Value = cmbDivision.SelectedText;
    report.StudentName.Value  = cmbStudent.SelectedText;

    report.RequestParameters = false;    // Hide the Parameters UI from end-users.
    report.ShowPreview();
}

使用
XtraReport.Parameters
collection将组合框值传递到参数名称中,如下例所示:

private void btnPrint_Click(object sender, EventArgs e)
{
    // Create a report instance.
    var report = new XtraReport1();

    // Obtain a parameter, and set its value.
    report.Parameters["ClassName"].Value = cmbClass.SelectedText;
    report.Parameters["SubclassName"].Value = cmbDivision.SelectedText;
    report.Parameters["StudentName"].Value = cmbStudent.SelectedText;

    report.RequestParameters = false; // Hide the Parameters UI from end-users.
    report.ShowPreview();
}
或者,您可以声明一个重载构造函数,该构造函数在其内部分配参数值,然后使用重载构造函数参数创建
XtraReport
实例:

// XtraReport
public partial class ReportName : DevExpress.XtraReports.UI.XtraReport
{
    // default parameterless constructor here

    public ReportName(string ClassName, string SubclassName, string StudentName)
    {
        InitializeComponent();

        this.Parameters["ClassName"].Value = ClassName;
        this.Parameters["SubclassName"].Value = SubclassName;
        this.Parameters["StudentName"].Value = StudentName;
    }
}

// Form code
private void btnPrint_Click(object sender, EventArgs e)
{
    // Create a report instance.
    var report = new XtraReport1(cmbClass.SelectedText, cmbDivision.SelectedText, cmbStudent.SelectedText);

    report.RequestParameters = false; // Hide the Parameters UI from end-users.
    report.ShowPreview();
}
参考:

更新:


如果每个文本框的
SelectedText
属性始终为空值,则可以使用
Text
SelectedItem
属性获取实际的组合框值(类似问题)


它不起作用,但我发现问题出在组合框上,通过使用断点,它表明无论我选择什么,SelectedText始终为空。如果
SelectedText
属性始终为空值,请使用
Text
属性或
SelectedItem.ToString()
——如更新部分所示。
private void btnPrint_Click(object sender, EventArgs e)
{
    // Create a report instance.
    var report = new XtraReport1();

    // Obtain a parameter, and set its value.
    report.Parameters["ClassName"].Value = cmbClass.Text;
    report.Parameters["SubclassName"].Value = cmbDivision.Text;
    report.Parameters["StudentName"].Value = cmbStudent.Text;

    report.RequestParameters = false; // Hide the Parameters UI from end-users.
    report.ShowPreview();
}