DbDataReader to DataGrid WPF



我有一个返回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的等价物是什么?

我最终解决了这个问题。

我发现了几个类似的帖子,建议使用:

DataTableExtensions.AsEnumerable(DataTable dt);

获取DataTable的枚举器接口,但这根本不起作用。

但是使用:

DataTableExtensions.AsDataView(DataTable dt);

用DataView类封装DataTable,这与WPF的DataGrid兼容。

相关内容

  • 没有找到相关文章

最新更新