2011-01-26 29 views
1

私はDataTable(DataGridViewを介して表示される)を持っていて、それを手動で再利用して別のデータを入力したいのです。だから、ワークフローは次のとおりです。C#でさまざまなデータソースにDataTableを再利用する方法は?

私はDataTableのを補充する必要があるたびに、私が行います

  1. 外すのDataGridViewからのDataTableを。
  2. DataTableコンテンツをクリアします。
  3. DataTableにDataColumnsとDataRowsを手動で追加します。
  4. DataTableをDataGridViewで再度フックします。

ステップ0を達成するには、単にDataGridView.DataSource = nullを実行します。

手順1を達成するために、DataTable.Clear()、DataTable.Rows.Clear()およびDataTable.Columns.Clear()を呼び出します。

手順3を達成するには、DataGridView.DataSource = DataTableを呼び出します。

ステップ2は通常の方法で行われ、コードをスキップします。

DataGridViewが新しいコンテンツで更新されるたびに、DataGridView列をクリックして並べ替えると、次にDataTableが更新されるときに、新しい行を追加しようとすると、手順2でnull参照例外が発生します。しかし、並べ替えるDataGridView列を決してクリックしない場合、すべて正常に動作します。

私はそれがソートと関係があると思います。しかし、null参照例外の原因は何もわかりません。 DataTableが古いコンテンツの一部のキーを検索しようとしましたが、見つからなかった可能性はありますか?もちろん、ステップ1のために古いコンテンツを見つけることはできません。古いDataTableコンテンツをクリアする正しい方法は何ですか。新しいコンテンツを埋め込むときに古いコンテンツを参照することはありませんか?

ありがとうございました。

+2

なぜ新しいDataTableを作成してみませんか?この複雑さを加えることで、あなたは何を得ますか? –

答えて

5

DataGridViewのデータバインディングは、テーブルに結び付けられています(DataView)。テーブルの下からテーブルを引き出すことはできず、作業を続けることを期待しています。
列でソートすると、グリッドはDataViewにソート順を変更するように要求します。これは、列がanymoeに存在しないために失敗します。

新しいDataTableを作成する必要があります。

+0

ありがとうございました。 – Steve

関連する問題