显示DataTable的值

时间:2016-01-18 14:17:32

标签: c# .net wpf datagrid

我创建了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中正确显示数据?

2 个答案:

答案 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"