0

WPF (.NET 3.5、WPFToolkit.dll) DataGrid にバインドされた DataTable があります。これは、非常に大規模なクライアント サーバー アプリケーションの内部にあります。サーバーはクライアントの「エンジン」にデータを非同期に送信できます。このデータは、エンジンによってコントロールに設定されるプロパティの形式で送信されます。

つまり、私が言いたいことの例として、class MyFunkyDataGrid : DataGrid. というタイプMyFunkyDataGridの DependencyPropertyがあります。サーバーで が変更されるたびに、クライアントですぐに同期され、 に設定されます。変更があった場合は、ディクショナリを読み込んで、データをグリッドの DataTable に設定します。MyFunkyDataDictionary<string, Object>MyFunkyDataMyFunkyDataGridMyFunkyData

もちろん、これが発生した場合は、最初に DataTable の現在のデータをクリアする必要があります。だから私は電話しますdataTable.Clear()。通常、これは御馳走になります。しかし、現在、 dataTableがクリアされているときに MyFunkyDataGrid のセルを編集している場合、次のようになります。

System.ExecutionEngineException was unhandled
  Message=Exception of type 'System.ExecutionEngineException' was thrown.
  InnerException: 

アプリがクラッシュします。CancelEdit()MyFunkyDataGrid で呼び出してみましたが、DataRow 自体で呼び出してみました。RejectChanges()を呼び出す前に DataTable を呼び出してみましたClear()。サイコロはありません。

誰もこれまでにこのようなものを見たことがありますか?

4

1 に答える 1

0

datatableをクリアする前にdatagrid.CancelEdit()が呼び出されても、なぜ例外がスローされるのかわかりません。ただし、データグリッドをクリアする前に、さらに2つの予防措置を講じることができます。これにより、例外を回避できます。

(1)選択したアイテムをデータグリッドのnullに設定できます

(2)datagridのItemSourceをdatatableの代わりにnullに設定してから、datatableをクリアすることができます。

于 2012-08-13T12:41:49.627 に答える