1

我有一个填充了一些数据的 RadGrid。我有一个按钮,它将通过服务器端回调导出到 Excel。服务器端代码如下。以及下面的错误。有什么建议么?

RadGrid1.Rebind();
   RadGrid1.ExportSettings.IgnorePaging = true;
   RadGrid1.MasterTableView.ExportToExcel();

错误是:

查询结果不能多​​次枚举。说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.InvalidOperationException:查询结果不能多​​次枚举。

源错误:

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

堆栈跟踪:

[InvalidOperationException: 查询结果不能枚举多次。] System.Data.Linq.SqlClient.OneTimeEnumerable 1.GetEnumerator() +884205 System.Data.Linq.SqlClient.SingleResult1.GetEnumerator() +76 System.Linq.Buffer1..ctor(IEnumerable1 来源)+302 System.Linq.d__0.MoveNext() +164 System.Linq.WhereSelectEnumerableIterator`2.MoveNext() +163 Telerik.Web.UI.GridResolveEnumerable.GetCollectionItemType(Boolean noItemsInEnumerator, Type&collectionItemType, Object&collectionFirstObject) +330 Telerik.Web.UI.GridResolveEnumerable.ParseProperties() +120 Telerik.Web.UI.GridResolveEnumerable.Initialize() +16 Telerik.Web.UI.GridResolveEnumerable.EnsureInitialized() +28 Telerik.Web.UI.GridEnumerableFromDataView..ctor( GridTableView 所有者,IEnumerable 可枚举,Boolean CaseSensitive,Boolean autoGenerateColumns,GridColumnCollection presentColumns,String[] additionalField,Boolean retrieveAllFields)+242 Telerik.Web.UI.GridDataSourceHelper.CreateGridEnumerable(GridTableView 所有者,IEnumerable 可枚举,布尔 caseSensitive,Boolean autoGenerateColumns, GridColumnCollection presentColumns, String[] additionalField, Boolean retrieveAllFields) +223 Telerik.Web.UI.GridDataSourceHelper.GetResolvedDataSource(GridTableView owner, Object dataSource, String dataMember, Boolean caseSensitive, Boolean autoGenerateColumns, GridColumnCollection presentColumns, String[] additionalField, Boolean retrieveAllFields) +595 Telerik.Web.UI.GridTableView.get_ResolvedDataSource() +243 Telerik.Web.UI.GridTableView.CreateChildControls(IEnumerable dataSource, Boolean useDataSource) +42 System.Web.UI.WebControls.CompositeDataBoundControl.PerformDataBinding(IEnumerable data) +72 System.Web.UI.WebControls.DataBoundControl.OnDataSourceViewSelectCallback(IEnumerable 数据) +147 System.Web.UI.WebControls.DataBoundControl.PerformSelect() +261 Telerik.Web.UI。GridTableView.PerformSelect() +9 Telerik.Web.UI.GridTableView.DataBind() +363 Telerik.Web.UI.RadGrid.DataBind() +73 Telerik.Web.UI.RadGrid.AutoDataBind(GridRebindReason rebindReason) +2488 Telerik. Web.UI.RadGrid.RebindForExport() +119 Telerik.Web.UI.Grid.Export.TableViewExporter.PrepareForExport() +315 System.EventHandler.Invoke(Object sender, EventArgs e) +0 System.Web.UI.Control。 OnPreRender(EventArgs e)+11056782 System.Web.UI.Control.PreRenderRecursiveInternal()+108 System.Web.UI.Page.ProcessRequestMain(布尔includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint)+3394RadGrid.RebindForExport() +119 Telerik.Web.UI.Grid.Export.TableViewExporter.PrepareForExport() +315 System.EventHandler.Invoke(Object sender, EventArgs e) +0 System.Web.UI.Control.OnPreRender(EventArgs e ) +11056782 System.Web.UI.Control.PreRenderRecursiveInternal() +108 System.Web.UI.Page.ProcessRequestMain(布尔includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint)+3394RadGrid.RebindForExport() +119 Telerik.Web.UI.Grid.Export.TableViewExporter.PrepareForExport() +315 System.EventHandler.Invoke(Object sender, EventArgs e) +0 System.Web.UI.Control.OnPreRender(EventArgs e ) +11056782 System.Web.UI.Control.PreRenderRecursiveInternal() +108 System.Web.UI.Page.ProcessRequestMain(布尔includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint)+3394

4

1 回答 1

2

您不想Rebind()在导出之前打电话。这有什么原因吗?您是否在导出前更改/操作数据?

如果没有,则无需调用Rebind(),因为这实际上只是为了刷新数据源。

于 2013-04-19T15:01:18.613 回答