2

尝试呈现报告时遇到以下问题:

Invalid value of report parameter XXX

我像这样以编程方式添加参数:

protected void btn_generate_Click(object sender, EventArgs e)
        {

            AddParamToRep();
            rep_attend.Visible = true;
        }

  protected void AddParamToRep()
        {
            try
            {
                int campCode = 0;
                if (ddl_camps != null && ddl_camps.Items.Count > 0)
                {
                    if (!string.IsNullOrEmpty(ddl_camps.SelectedValue))
                    {
                        campCode = int.Parse(ddl_camps.SelectedValue);
                    }
                }

                rep_attend.ReportSource.Parameters.Add(new Telerik.Reporting.Parameter("camp_code", campCode));
                rep_attend.ReportSource.Parameters.Add(new Telerik.Reporting.Parameter("dep_code", int.Parse(rad_ddl_dep.SelectedValue)));
                rep_attend.ReportSource.Parameters.Add(new Telerik.Reporting.Parameter("dep_name", rad_ddl_dep.SelectedItem.Text));
                rep_attend.ReportSource.Parameters.Add(new Telerik.Reporting.Parameter("rep_type", int.Parse(rbl_type.SelectedValue)));
            }
            catch (Exception ee)
            {
            }

        }

<telerik:ReportViewer ID="rep_attend" runat="server" Width="100%" Height="700px"
        Visible="false" ParametersAreaVisible="False" ShowPrintButton="False"> <typereportsource 
        typename="Reports.Det_HR_rep,Reports, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"></typereportsource>
</telerik:ReportViewer>

堆栈详细信息:

[异常:报告参数“camp_code”的值无效。] [CancelProcessingException:处理报告时发生错误。处理已取消。检查 InnerException 了解更多信息。] Telerik.Reporting.Processing.Report.ValidateParameters() +218 Telerik.Reporting.Processing.Report.ProcessItem() +51 Telerik.Reporting.Processing.ReportItemBase.ProcessElement() +31 Telerik.Reporting .Processing.Report.ProcessElement() +21 Telerik.Reporting.Processing.ProcessingElement.Process(DataMember dataContext) +112 Telerik.Reporting.Processing.Report.Process(DataItemState state, IEnumerable`1 参数, Boolean processItemActions, Boolean documentMapEnabled) + 97 Telerik.Reporting.Processing.ReportProcessor.ProcessReport(ReportSource reportSource,IRenderingContext processingContext)+514 Telerik。

4

2 回答 2

1

从此链接引用,您的问题是:

...也就是说,当报告进入处理阶段时,其值将根据其验证属性进行验证。如果一个或多个参数没有有效值,则中止处理。报告参数定义了用于验证提供的参数值的以下属性:

类型

确定可接受的值的类型。允许的类型为 Boolean、DateTime、Integer、Float、String。默认参数类型是字符串。

允许为空

确定 null(VB.Net 中的无)是否可接受。

允许空白

仅在参数为字符串类型时应用。确定是否可以接受空字符串。

于 2013-06-18T12:26:02.793 回答
1

答案 1:缺少一个参数(不是错误中提到的那个)。

答案 2:在另一份报告中,问题在于有两个数据源,其中一个是提供主源参数的下拉列表选项。当使用 reportProcessor.RenderReport 方法以编程方式生成报表时,提供的参数必须出现在数据源为下拉列表生成的列表中。

答案 3:在报表设计器中,右键单击报表下方并选择报表参数。对于每个参数,检查它的类型和限制。

答案4:对于报表中的每个数据源,检查每个参数的类型,并检查值列中是否分配了值。

于 2020-03-18T11:59:17.763 回答