我创建了DataTable
:
DataTable datatable = new DataTable();
在使用某些数据填充DataTable
后,我试图在DataGrid
中显示其数据:
dataGrid1.DataContext = datatable.DefaultView;
我的DataGrid
具有以下配置:
<DataGrid AutoGenerateColumns="False" Height="124" HorizontalAlignment="Left"
Margin="41,92,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="335"
DataContext="{Binding}" ColumnHeaderHeight="20" RowHeight="20" />
虽然我的DataTable
包含预期数据,但DataGrid
为空。
我确定我的代码有问题,但我无法找到答案。如何使用WPF中DataGrid
的数据在DataTable
中正确显示数据?
答案 0 :(得分:3)
在AutoGenerateColumns="False"
中使用DataGrid
时,您还应使用<DataGrid.Columns>
来完全控制显示哪些列以及如何查看和编辑其数据。或者将AutoGenerateColumns
设置为True
,以便DataGrid
自动为您生成适当的列:
AutoGenerateColumns="True"
另外,您应该设置DataGrid
ItemsSource
而不是DataContext
:
dataGrid1.ItemsSource = datatable.DefaultView;
答案 1 :(得分:0)
DataTable table = new DataTable();
DataColumn column;
DataRow row;
DataView view;
column = new DataColumn();
column.DataType = System.Type.GetType("System.Int32");
column.ColumnName = "id";
table.Columns.Add(column);
column = new DataColumn();
column.DataType = Type.GetType("System.String");
column.ColumnName = "name";
table.Columns.Add(column);
// Create new DataRow objects and add to DataTable.
for (int i = 0; i < 5; i++)
{
row = table.NewRow();
row["id"] = i;
row["name"] = "Name " + i.ToString();
table.Rows.Add(row);
}
dataGrid1.ItemsSource = table.DefaultView;
删除AutoGenerateColumns="False"
或设置AutoGenerateColumns="True"