【问题标题】:Show values of a DataTable显示数据表的值
【发布时间】:2016-01-18 14:17:32
【问题描述】:

我正在创建一个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 中使用来自 DataTable 的数据正确显示 DataGrid 中的数据?

【问题讨论】:

标签: c# .net wpf datagrid


【解决方案1】:

当您在DataGrid 中使用AutoGenerateColumns="False" 时,您还应该使用&lt;DataGrid.Columns&gt; 来完全控制显示哪些列以及应如何查看和编辑其数据。或将AutoGenerateColumns 设置为True,以便DataGrid 自动为您生成适当的列:

AutoGenerateColumns="True"

您还应该设置DataGridItemsSource 而不是DataContext

dataGrid1.ItemsSource = datatable.DefaultView;

【讨论】:

    【解决方案2】:
    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"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-10
      • 1970-01-01
      • 2022-08-02
      • 2013-11-10
      • 2021-08-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多