在 DataGrid 中显示数据行列表
Display a List of DataRows in DataGrid
我正在尝试在 DataGrid
中显示 List
的 DataRows
,如下所示:
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" />
您不需要 DataRows
的 List
。你可以简单地:
dataGrid1.ItemsSource = dt.DefaultView;
或者:
dataGrid1.DataContext = dt.DefaultView;
并且:
<DataGrid Name="dataGrid1" ItemsSource="{Binding}">
更新:如果你还想要DataRows
的List
:
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++)
请使用foreach循环,它更容易,你不会出错。
foreach (var row in dt.Rows)
{
grid.Add(row);
}
我正在尝试在 DataGrid
中显示 List
的 DataRows
,如下所示:
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" />
您不需要 DataRows
的 List
。你可以简单地:
dataGrid1.ItemsSource = dt.DefaultView;
或者:
dataGrid1.DataContext = dt.DefaultView;
并且:
<DataGrid Name="dataGrid1" ItemsSource="{Binding}">
更新:如果你还想要DataRows
的List
:
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++)
请使用foreach循环,它更容易,你不会出错。
foreach (var row in dt.Rows)
{
grid.Add(row);
}