2

我在“/”应用程序中收到服务器错误。

异常详情:

System.ArgumentOutOfRangeException:索引超出范围。必须是非负数且小于集合的大小。参数名称:索引

源错误:

在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。

堆栈跟踪:

[ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index]
   System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource) +67
   System.ThrowHelper.ThrowArgumentOutOfRangeException() +16
   System.Collections.Generic.List`1.get_Item(Int32 index) +19
   Telerik.Reporting.HtmlRendering.HtmlElementRenderer.GetEndElement(ProcessingElement startElement) +267
   Telerik.Reporting.HtmlRendering.HtmlElementRenderer.BeginRender(HtmlRenderingContext context) +382
   Telerik.Reporting.HtmlRendering.BaseElementRenderer.RenderToHtml(HtmlRenderingContext context) +17
   Telerik.Reporting.HtmlRendering.ContainerElementRenderer.Render(HtmlRenderingContext context) +108
   Telerik.Reporting.HtmlRendering.BaseElementRenderer.RenderToHtml(HtmlRenderingContext context) +26
   Telerik.Reporting.HtmlRendering.ContainerElementRenderer.Render(HtmlRenderingContext context) +108
   Telerik.Reporting.HtmlRendering.BaseElementRenderer.RenderToHtml(HtmlRenderingContext context) +26
   Telerik.Reporting.HtmlRendering.ContainerElementRenderer.Render(HtmlRenderingContext context) +108
   Telerik.Reporting.HtmlRendering.BaseElementRenderer.RenderToHtml(HtmlRenderingContext context) +26
   Telerik.Reporting.HtmlRendering.ContainerElementRenderer.Render(HtmlRenderingContext context) +108
   Telerik.Reporting.HtmlRendering.BaseElementRenderer.RenderToHtml(HtmlRenderingContext context) +26
   Telerik.Reporting.HtmlRendering.ContainerElementRenderer.Render(HtmlRenderingContext context) +108
   Telerik.Reporting.HtmlRendering.BaseElementRenderer.RenderToHtml(HtmlRenderingContext context) +26
   Telerik.Reporting.HtmlRendering.ContainerElementRenderer.Render(HtmlRenderingContext context) +108
   Telerik.Reporting.HtmlRendering.BaseElementRenderer.RenderToHtml(HtmlRenderingContext context) +26
   Telerik.Reporting.HtmlRendering.HtmlTextBoxRenderer.RenderInternal(ProcessingElement processingElement, HtmlRenderingContext context) +163
   Telerik.Reporting.HtmlRendering.HtmlItemRender.Telerik.Reporting.HtmlRendering.IReportItemRender.Render(ProcessingElement processingElement, RenderingContext context) +92
   Telerik.Reporting.HtmlRendering.RenderingContext.Render(ReportItemBase item) +50
   Telerik.Reporting.HtmlRendering.Matrix.RenderInternal(HtmlRenderingContext context) +3645
   Telerik.Reporting.HtmlRendering.Matrix.Render(HtmlRenderingContext context) +40
   Telerik.Reporting.HtmlRendering.ReportSectionBaseRenderer.RenderInternal(ProcessingElement processingElement, HtmlRenderingContext context) +69
   Telerik.Reporting.HtmlRendering.HtmlItemRender.Telerik.Reporting.HtmlRendering.IReportItemRender.Render(ProcessingElement processingElement, RenderingContext context) +92
   Telerik.Reporting.HtmlRendering.RenderingContext.Render(ReportItemBase item) +50
   Telerik.Reporting.HtmlRendering.HtmlPage.RenderReportSections(HtmlWriter bodyWriter) +557
   Telerik.Reporting.HtmlRendering.HtmlPage.RenderBody(HtmlWriter bodyWriter) +320
   Telerik.Reporting.HtmlRendering.HtmlPage.Render(HtmlTextWriter primaryWriter, HtmlRenderingContext renderingContext) +112
   Telerik.Reporting.HtmlRendering.HtmlReport.Render(HtmlTextWriter writer, Int32 startPage, Int32 endPage) +304
   Telerik.Reporting.HtmlRendering.HtmlReport.Render(HtmlTextWriter writer) +56
   Telerik.Reporting.HtmlRendering.HtmlRenderingExtension.Telerik.Reporting.Processing.IRenderingExtension.Render(Report report, Hashtable renderingContext, Hashtable deviceInfo, CreateStream createStreamCallback, EvaluateHeaderFooterExpressions evalHeaderFooterCallback) +134
   Telerik.Reporting.Processing.ReportProcessor.Render(IList`1 reports, ExtensionInfo extensionInfo, Hashtable renderingContext, Hashtable deviceInfo, CreateStream createStreamCallback) +352
   Telerik.Reporting.Processing.ReportProcessor.RenderReport(String format, IReportDocument reportDocument, Hashtable deviceInfo, CreateStream createStreamCallback, String& documentName) +421
   Telerik.ReportViewer.WebForms.ServerReport.Render(HttpResponse response, String format, Int32 pageIndex) in c:\Projects\Reporting\FromSC_scrum\@ReportingBuild\Reporting_Build\Net20\Telerik.ReportViewer.WebForms\ServerReport.cs:90
   Telerik.ReportViewer.WebForms.ReportPageOperation.PerformOperation(NameValueCollection urlQuery, HttpContext context) in c:\Projects\Reporting\FromSC_scrum\@ReportingBuild\Reporting_Build\Net20\Telerik.ReportViewer.WebForms\ReportPageOperation.cs:25
   Telerik.ReportViewer.WebForms.HttpHandler.System.Web.IHttpHandler.ProcessRequest(HttpContext context) in c:\Projects\Reporting\FromSC_scrum\@ReportingBuild\Reporting_Build\Net20\Telerik.ReportViewer.WebForms\HttpHandler.cs:59
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +705
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +137

我在 Telerik 报告查看器中收到此错误。仅针对特定条件而不是针对所有值获取此错误。

我在哪里遗漏了什么?

请帮我。

4

3 回答 3

0

我有同样的问题。我还没有弄清楚它的起源,但我想它来自数据源绑定。当您在报表上创建新实例时,它会在 InitializeComponent() 方法中创建默认控件(例如,具有 0 行的 List 或没有文本的 TextBox)。当您绑定数据源(例如,具有 3 个项目的列表)时,它引用列表(Telerik Reporting 控件)并尝试将具有 3 个项目的集合绑定到具有 0 行的控件。所以在这种情况下,你有 OutOfRangeException。我猜是这样的。

UPD:实际上,我昨天已经解决了我的问题。这都是因为我尝试将空集合绑定为控件的数据源。如果在绑定之前它不包含任何元素,我只是将默认对象(具有空属性)添加到我的集合中。

于 2012-03-22T15:31:48.207 回答
0

检查您是否可以在 Telerik 报表设计器中预览报表。

我在运行代码时看到了同样的错误:

System.ArgumentOutOfRangeException:索引超出范围。必须是非负数且小于集合的大小。参数名称:索引

在报表设计器中,我遇到了错误:

缺少或无效的参数值。请输入所有参数的有效数据

我更正了报表设计器错误(通过添加默认参数值,请参见下面的屏幕截图)并且没有进行其他“代码”更改,这解决了这两个问题。

有趣的是,如果我删除报告设计器错误返回的默认值,但在代码中运行报告仍然可以(可能报告以有效状态缓存在某处?)

在此处输入图像描述

于 2019-05-09T16:33:26.857 回答
0

我们间歇性地遇到了一个非常相似的问题。清除 Telerik 状态数据库表似乎有时可以解决我们的问题。您可以在下面的脚本中翻转@Condition1执行删除。

DECLARE @Condition AS BIT = 0;
IF @Condition = 1
BEGIN
    DELETE dbo.tr_AppLock;
    DELETE dbo.tr_Object;
    DELETE dbo.tr_Set;
    DELETE dbo.tr_String;
END;

SELECT *
FROM dbo.tr_AppLock AS tal;

SELECT *
FROM dbo.tr_Object AS tob;

SELECT *
FROM dbo.tr_Set AS ts;

SELECT *
FROM dbo.tr_String AS ts;
于 2018-07-19T19:19:13.150 回答