我有一个返回 DbDataReader 对象的模块。这是一个在 Windows.Forms 中与 DataTable/DataGridView 一起经过尝试和信任并在生产中使用的模块,因此我不想更改它。
我尝试对 WPF 执行相同的操作,将 DataTable 传递给 ItemsSource,但失败了,因为它期望 DataTable 未实现的 IEnumerator。
我记得 DbDataReader 确实实现了该接口,我突然想到 ItemsSource 可能想要将数据读入内部缓冲区,所以我尝试传递 DbDataReader 并且它起作用了......直到我用 finally 子句完成了代码!
然后我发现 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 的等价物是什么?