DbDataReaderオブジェクトを返すモジュールがあります。これは、Windows.FormsのDataTable/DataGridViewで実証され信頼されており、本番運用で使用されているモジュールなので、変更したくありません。DataGridへのDbDataReader WPF
DataTableをItemsSourceに渡してもWPFと同じことを試みましたが、DataTableが実装していないIEnumeratorが必要であるために失敗しました。
DbDataReaderがそのインターフェイスを実装していると思い、ItemsSourceが内部バッファにデータを読み込もうとしている可能性があるため、DbDataReaderを渡してみました。句!
次に、DataTableExtensionsによってDataTableから列挙子を取得できることがわかりました。データを反復処理しているようには見えません!
私はデータを編集する必要はなく、DbDataReaderから入手したものは問題ありませんでした。必要なのはグリッド用にこのデータのコピーです。これを行うにはどうすればよいですかシンプルに!
ありがとうございました!
リクエストに応じて、ここにコードがあります。
これは基本的に私は、Windowsフォームでやってる事に使用のタイプである:
DbDataReader dr=null;
DataTable dt=null;
try{
dr = AModule.FetchData(Params....);
dt.Load(dr);
}
finally{
if(dr!=null)dr.Close();
}
dataGridView1.DataSource=dt;
WPFとなるものは何ですか?
いくつかのコードを組み込むと非常に便利です。しかし、私があなたの問題を理解すれば、VirutualizingCollectionのためにDbDataReaderを何らかの形でラップすることができます。おそらく、[codeproject](http://www.codeproject.com/script/Membership/View.aspx?mid=1402727)のPaulMcLeanによるこの素晴らしい作品は、 – bamanow