c# - Crystal Report 参数再次不起作用

标签 c# winforms parameters crystal-reports

我正在尝试将参数传递给我的报告。我尝试了不同的方法,但每次它都会提示我输入参数值。我阅读了大量类似的问题,但对我没有任何帮助。

P_REQUEST_ID 是一个静态数字参数字段,用于过滤报表中的数据。

这是我的代码:

// creating report
var reportDocument = new ReportDocument();
reportDocument.Load("ReportRequestPrice.rpt");

// creating report form 
var dialog = new FormReport();

// not working
var paramFields = new ParameterFields();
var paramField = new ParameterField();
var paramDiscreteValue = new ParameterDiscreteValue();
paramField.Name = "P_REQUEST_ID";
paramDiscreteValue.Value = 1;
// not working
// paramDiscreteValue.Value = "1";
paramField.CurrentValues.Add(paramDiscreteValue);
paramFields.Add(paramField);
dialog.reportViewer.ParameterFieldInfo = paramFields;

/*
// not working
var param = new ParameterDiscreteValue();
param.Value = 1;
reportDocument.ParameterFields["P_REQUEST_ID"].CurrentValues.Add(param);
// not working
//reportDocument.ParameterFields[0].CurrentValues.Add(param);
*/

// setting datasource
reportDocument.SetDataSource(printshopDS);
reportDocument.Subreports[0].SetDataSource(printshopDS);

dialog.reportViewer.ReportSource = reportDocument;            

dialog.ShowDialog(this);

最佳答案

此问题可以通过 Crystal Reports for Visual Studio 2005 重现。解决方法是先设置 CrystalReportViewer 的 ReportSource 属性,然后通过属性 ParameterFieldInfo 设置参数值。因此,您的代码应该是:

// creating report
var reportDocument = new ReportDocument();
reportDocument.Load("ReportRequestPrice.rpt");

// creating report form 
var dialog = new FormReport();

dialog.reportViewer.ReportSource = reportDocument;            

// not working
var paramFields = new ParameterFields();
var paramField = new ParameterField();
var paramDiscreteValue = new ParameterDiscreteValue();
paramField.Name = "P_REQUEST_ID";
paramDiscreteValue.Value = 1;
// not working
// paramDiscreteValue.Value = "1";
paramField.CurrentValues.Add(paramDiscreteValue);
paramFields.Add(paramField);
dialog.reportViewer.ParameterFieldInfo = paramFields;


// setting datasource
reportDocument.SetDataSource(printshopDS);
reportDocument.Subreports[0].SetDataSource(printshopDS);


dialog.ShowDialog(this);

关于c# - Crystal Report 参数再次不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14866031/

相关文章:

c# - 在C#中,你如何称呼数组引入的那种多态性?

c# - 将 PdfPCell 添加到段落

c# - 为什么我们在尝试用另一个字符串替换它时将 @ 与 "\"一起使用

arrays - 在Lua中将数组作为函数参数传递?

c - 如何将指向在另一个结构内声明的结构的指针作为函数参数传递?

c# - 如何在可重用的 .NET 库上启用向前兼容性?

c# - 如何删除关闭按钮,而不是它的图标?

c# - 我怎么知道用户何时可以使用强制滚动条滚动 RichTextBox

c# - 退出按钮以关闭 C# 中的 Windows 窗体窗体

python - 将字典作为关键字参数传递给函数