DbDataReader到DataGrid WPF

时间:2016-05-11 18:28:31

标签: c# wpf datagrid dbdatareader

我有一个返回DbDataReader对象的模块。这是一个经过尝试和信任的模块,并且在Windows.Forms中使用DataTable / DataGridView进行生产,因此我不想更改它。

我尝试对WPF做同样的事情,将DataTable传递给ItemsSource,但是因为它期待一个IETumerator没有实现DataTable而失败了。

我记得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等效的是什么?

1 个答案:

答案 0 :(得分:0)

我最终解决了这个问题。

我找到了几个类似的帖子建议使用:

DataTableExtensions.AsEnumerable(DataTable dt);

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

但是使用:

DataTableExtensions.AsDataView(DataTable dt);

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