从web表单参数传递给水晶报表表单、报表、水晶、参数

2023-09-03 20:38:19 作者:烟酒为伴

我有一个报告,我想在一个Web窗体显示。不带参数的报告正在漂亮而精致。带参数的报表创建头疼的我。这是$ C $词都写在BindReport方法,这就是所谓的形式的页面加载事件。

i have a report and i want to display it on a webform. Reports without parameters are working nice and fine. Reports with parameters are creating headache for me. this is the code i have written in BindReport method, which is called on page load event of the form.

    ReportDocument rpt = new ReportDocument();
    rpt.Load(Server.MapPath("rptPositionwiseMontwiseActualSale.rpt"));
    rpt.FileName = Server.MapPath("rptPositionwiseMontwiseActualSale.rpt");
    rpt.SetParameterValue("CompanyName", "Cirin Pharmaceutical Pvt. Limited".ToString());
    rpt.SetParameterValue("ReportTitle", "PositionWise MonthWise Sales".ToString());
    rpt.SetParameterValue("parameters", "Year:2011".ToString());
    //CrystalReportViewer1.ParameterFieldInfo = paramFields;
    DataSet ds = getReportData();
    rpt.SetDataSource(ds.Tables[0]);
    CrystalReportViewer1.ReportSource = rpt;
    CrystalReportViewer1.ReuseParameterValuesOnRefresh = true;

    //CrystalReportViewer1.RefreshReport();

我已经尝试过各种各样的事象分配ParameterFieldInfo到ReportViewer控件,但它让我提示在页面加载要求报告的参数值。 I M使用.NET 4.0 修改使用推模式水晶报表IM。它改变了我们可以传递参数从asp.net报告  感谢

i have tried variety of things like assigning ParameterFieldInfo to reportviewer control but, it shows me prompt on page load asking for parameter values of the report. i m using .NET 4.0 EDIT i m using push model for crystal reports. does it change the way we can pass parameters to report from asp.net thanks

推荐答案

在设定的参数值在运行时ASP.NET我觉得你需要做更多的工作不仅仅是一个名为 SetParameterValue

When setting Parameter values at runtime for ASP.NET I think you need to do a bit more work than just called SetParameterValue

string rptTitle = "This is Report Title";

rpt.SetParameterValue("ReportTitle", rptTitle);

ParameterDiscreteValue val = new ParameterDiscreteValue();
val.Value = rptTitle;

ParameterValues paramVals = new ParameterValues();

paramVals.Add(val);

rpt.ParameterFields["ReportTitle"].CurrentValues = paramVals;

rpt.DataDefinition.ParameterFields[0].ApplyCurrentValues(paramVals);

这可能是有点大材小用,但它实际工作,很适合我反正。你必须确保参数名称完全匹配。

This is probably a bit of overkill but it does actually work, well for me anyway. You must ensure that the parameter names match exactly.