尝试渲染报告时遇到以下问题:
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(数据成员 dataContext)+112 Telerik.Reporting.Processing.Report.Process(DataItemState状态, IEnumerable`1参数,Boolean processItemActions,Boolean documentMapEnabled)+97 Telerik.Reporting.Processing.ReportProcessor.ProcessReport(ReportSource reportSource,IRenderingContext processingContext)+514 Telerik.Reporting.Processing.ReportProcessor.ProcessReport(ReportSource reportSource,Hashtable deviceInfo,IRenderingContext processingContext)+259 Telerik.ReportViewer.WebForms.ReportRenderOperation.ProcessReport(ReportSource reportSource,Hashtable deviceInfo,IRenderingContext renderingContext)+308 Telerik.ReportViewer.WebForms.ReportRenderOperation.PerformOperationOverride() +159 Telerik.ReportViewer.WebForms.ReportPageOperation.PerformOperationOverride() +83 Telerik.ReportViewer.WebForms.HandlerOperation.PerformOperation(HttpContext 上下文,ICacheManager cacheManager)+45 Telerik.ReportViewer.WebForms.BasicHandler.ProcessRequest(HttpContext的 上下文)+160 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +399 System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean&amp; completedSynchronously)+76
答案 0 :(得分:1)
引自this link,您的问题是:
...也就是说,当报表进入处理阶段时,其值将根据其验证属性进行验证。如果一个或多个参数没有有效值,则中止处理。报告参数定义用于验证提供的参数值的以下属性:
<强>类型强>
确定可接受的值的类型。允许的类型是Boolean,DateTime,Integer,Float,String。默认参数类型为String。
<强>允许为空强>
确定null(VB.Net中的Nothing)是否可接受。
<强> AllowBlank 强>
仅在参数类型为String时应用。确定空字符串是否可接受。
答案 1 :(得分:1)
答案1::缺少一个参数(不是错误中提到的参数)。
答案2:在另一份报告中,问题在于有两个数据源,其中一个是为主要数据源的参数提供一个下拉选择列表。使用reportProcessor.RenderReport方法以编程方式生成报告时,提供的参数必须出现在下拉列表的数据源生成的列表中。
答案3:在报表设计器中,右键单击报表下方,然后选择“报表参数”。对于每个参数,请检查其类型和限制。
答案4:对于报表中的每个数据源,请检查每个参数的类型,并检查是否在值列中分配了值。