DbDataReader オブジェクトを返すモジュールがあります。これは、Windows.Forms の DataTable/DataGridView で試用され、信頼され、運用環境で使用されているモジュールであるため、変更したくありません。
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と同等のものは何ですか?