2011-04-28 28 views
2

DataGridをC#コードのDataTableにバインドするにはどうすればいいですか? (すべてのコントロールが実行時に生成されるので、ノーXAMLください)DataGridにDataTableをバインドする方法

は、私は(バインドしようとした)、のDataContextを設定し、のItemsSourceを設定し、すべてが動作しません:

/* Binding() fails */ 
Binding bind = new Binding(); 
bind.Source = dataset; 
bind.Path = new PropertyPath("dataset.Tables"); 
datagrid.SetBinding(DataSet, bind); 

/* DataContext fails */ 
datagrid.DataContext = dataset.Tables; 

/* ItemsSource fails */ 
datagrid.ItemsSource = dataset.Tables; 

私が必要とするすべてのDataGridをDataTableにバインドすることです。DataTableに新しい行が追加されると、自動的にDataGridに表示されます。

私はすべてstackoverflowとgoogleで検索しますが、妙に私は解決策を見つけることができません。

+0

DataTableをDataGridにバインドすると、DataGridをDataTableにバインドしません。 – Jethro

+0

DataTableの** TableNewRow **イベントに登録し、 – V4Vendetta

答えて

6

は、データセット内のテーブルの1への結合を試してみてください:あなたのデータとフォーム上の表現の間の良好な抽象レイヤを維持するために、また

datagrid.ItemsSource = dataset.Tables[0].DefaultView; 
+0

を割り当てようとしています。DataGridをDataTableにバインドして間違った方法でデータを更新するというロジックがあると思います。 – Jethro

+0

@tomasmcguiness。うわー - 問題は解決しました。ありがとう!!それは5分の制限で答えるために待つことができません。 Btw。 DefaultViewとは何ですか? – KMC

+1

DefaultViewは、DataTableのDataViewです。これをフィルタリング、ソートに使用できます。 Wpf internalは、このDefaultViewをBindingListCollectionViewに変換します。このため、私は常にBindingListCollectionViewに直接バインドします。 – blindmeis

0

、私はのプロパティAutoGenerateColumnsを設定することができますことをお勧めDataGridViewをfalseに設定し、選択したヘッダー名(この場合、列のDataPropertyNameプロパティを設定することを忘れないでください)で、手で表示する列だけを追加します。

関連する問題