在WPF中将DataSet绑定到DataGrid

11

我知道这个问题已经被问过很多次,但是我还是无法理解。我有一个 DataSet 和一个 DataGrid。我想要做的就是在 DataGrid 中显示 DataSet 的内容。

我已经写了这段代码:

vConn = new OleDbConnection(ConnectionString);
vConn.Open();

vQuery = "Select * from Book";

DataSet vDs = new DataSet();
OleDbDataAdapter vAdap = new OleDbDataAdapter(vQuery, vConn);
vAdap.Fill(vDs,"Book");

GridData.DataContext = vDs.Tables["Book"];
vConn.Close();

但由于某些原因,数据未显示在DataGrid上。我尝试将AutoGenerateColumn设置为True/False。我还尝试在xaml中进行绑定,但没有成功。


1
你尝试过将你的DataTable设置为DataGrid的ItemsSource属性吗? - Colin
2
它说:“无法隐式转换'System.Data.DataTable'为'System.Collections.IEnumerable'”。 - Tanuj Wadhwa
2个回答

13

这应该可以工作:

GridData.ItemsSource = vDs.Tables["Book"].DefaultView;

或者您可以创建自己的DataView

GridData.ItemsSource = new DataView(vDs.Tables["Book"]);

DataTable.DefaultView会给你一个实现IEnumerable接口的DataView,可以用作ItemsSource


@Okuma.Scott DataTable 必须转换为实现 IEnumerableDataView。您可以在 XAML 中将 DataTable 绑定到 ItemsSource,但仍需要一个执行该转换的 IValueConverter - dkozl
谢谢。最终我只是在代码后端提取了我想要的表格并将其绑定到那里。如果您尝试直接将GridView的ItemsSource绑定到DataSet,编译器确实应该抛出错误... - Scott Solmer

1

好的,这里可能是你正在处理的相同问题。

您可以尝试将ItemsSource属性设置如下:

GridData.ItemsSource = vDs.Tables["Book"].AsEnumerable();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接