2017-01-24 5 views
2

Я пытаюсь отобразить List из DataRows в DataGrid как это:Отображение списка DataRows в DataGrid

List<DataRow> grid = new List<DataRow>(); 

for (int i = 0; i <= dt.Rows.Count; i++) 
{ 
    grid.Add(dt.Rows[i]); 
} 
dataGrid1.ItemsSource = grid; 

dt является DataTable, откуда я получаю мои данные. Проблема в том, что при запуске кода datagrid пуст.

Это не работает, тоже:

datagrid1.DataContext = grid; 

Edit: (XAML)

<DataGrid Name="dataGrid1" /> 
+0

Не могли бы вы поделиться XAML для 'datagrid1' –

+0

Ваш код будет работать, если вы добавите' ItemsSource = «{Binding}» 'в вашем XAML –

ответ

3

Вам не нужен List из DataRows. Вы могли бы просто:

dataGrid1.ItemsSource = dt.DefaultView; 

Или:

dataGrid1.DataContext = dt.DefaultView; 

И:

<DataGrid Name="dataGrid1" ItemsSource="{Binding}"> 

Update: Если вы все еще хотите List из DataRows:

dataGrid1.ItemsSource = dt.AsEnumerable() 
          .Where(grid.Contains) 
          .AsDataView(); 

Кроме того, вы должны изменить это:

for (int i = 0; i <= dt.Rows.Count; i++) 

к этому:

for (int i = 0; i < dt.Rows.Count; i++) 
+0

Было бы здорово, если бы вы добавить, почему' 'List не подходит для привязки –

+0

@ un-lucky Это не нужно. –

+0

Позже я хочу манипулировать некоторыми столбцами выбранных строк, поэтому мне нужно, чтобы «i» из цикла for. Ваш упрощенный метод работает, но мне не помогает – reveN

0

Пожалуйста, используйте цикл Еогеасп гораздо легче, и вы не можете делать ошибки.

foreach (var row in dt.Rows) 
{ 
    grid.Add(row); 
} 
Смежные вопросы