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 列挙可能、Boolean 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(オブジェクト送信者、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) +3394RadGrid.RebindForExport() +119 Telerik.Web.UI.Grid.Export.TableViewExporter.PrepareForExport() +315 System.EventHandler.Invoke(オブジェクト送信者、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(オブジェクト送信者、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 に答える