2017-01-24 29 views
2

我想在一個DataGrid這樣顯示DataRowsList顯示的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; 

編輯: (XAML)

<DataGrid Name="dataGrid1" /> 
+0

能否請您分享的XAML'datagrid1' –

+0

如果添加'的ItemsSource =「{結合}」'在你的XAML –

回答

3

你不需要DataRowsList。你根本就:

dataGrid1.ItemsSource = dt.DefaultView; 

或者:

dataGrid1.DataContext = dt.DefaultView; 

和:

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

更新:如果你還想要一個ListDataRows的:

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

如果添加,爲什麼'名單這將是巨大的'你的代碼將工作不適合綁定 –

+0

@不幸是沒有必要的。 –

+0

後來我想操作選定行的某些列,這就是爲什麼我需要for循環中的「我」。你的簡化方法有效,但並不能幫助我對不起 – reveN

0

請使用foreach循環它是更容易,你不能這樣做的錯誤。

foreach (var row in dt.Rows) 
{ 
    grid.Add(row); 
}