我有一个填充了一些数据的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.SingleResult
1.GetEnumerator()+76 System.Linq.Buffer1..ctor(IEnumerable
1来源)+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枚举,布尔值CaseSensitive,布尔值autoGenerateColumns,GridColumnCollection presentColumns,String [] additionalField,Boolean retrieveAllFields)+242 Telerik.Web.UI.GridDataSourceHelper.CreateGridEnumerable(GridTableView owner,IEnumerable enumerable,Boolean caseSensitive,Boolean autoGenerateColumns,GridColumnCollection presentColumns,String [] additionalField,Boolean retrieveAllFields)+223 Telerik.Web.UI.GridDataSourceHelper.GetResolvedDataSource(GridTableView所有者,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 data)+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(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)+3394
答案 0 :(得分:2)
您不希望在导出前致电Rebind()
。这有什么理由吗?您是在出口之前更改/操纵数据吗?
如果没有,则无需调用Rebind()
,因为这实际上只是为了刷新数据源。