2013-06-06 3 views
3

Я знаю, что это было задано несколько раз, но я не могу это получить. У меня есть DataSet и DataGrid. Все, что я хочу сделать, это показать содержимое DataSet в DataGrid.привязка DataSet к DataGrid в WPF

Я написал этот код:

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, но это не сработало.

+0

Вы пытались установить свой DataTable в свойство ItemsSource DataGrid? – Colin

+0

в нем говорится: «Невозможно неявно преобразовать' System.Data.DataTable' в 'System.Collections.IEnumerable' ' –

ответ

6

это должно работать:

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

или вы можете создать свой собственный DataView:

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

DataTable.DefaultView дает вы DataView, который реализует IEnumerable и может использоваться как ItemsSource

+0

, создавая собственные работы DataView. Благодарю. –

+0

Можно ли это сделать в xaml? –

+0

@ Okuma.Scott 'DataTable' должен быть преобразован в' DataView', который реализует 'IEnumerable'. Вы можете привязать 'DataTable' к' ItemsSource' в XAML, но вам все равно понадобится 'IValueConverter', который выполнит это преобразование. – dkozl

0

ОК, поэтому here может быть той же проблемой, с которой вы имеете дело.

Вы можете попробовать установить ItemsSource свойство следующим образом:

GridData.ItemsSource = vDs.Tables["Book"].AsEnumerable(); 
Смежные вопросы