【问题标题】:Can't force DataGridView generate columns无法强制 DataGridView 生成列
【发布时间】:2019-06-22 23:39:19
【问题描述】:

我正在动态创建数据表和数据网格视图,并且只是希望网格从该表中生成列。

// create simple datatable
DataTable dt = new DataTable();
dt.Columns.Add("Id", typeof(int));
dt.Columns.Add("Name", typeof(string));
DataGridView dgv = new DataGridView() { AutoGenerateColumns = true };

// None of the below force datagridview to generate columns
dgv.DataSource = dt;
Debug.WriteLine($"Grid columns count: {dgv.Columns.Count}");
dgv.DataSource = new BindingSource(dt, null);
Debug.WriteLine($"Grid columns count: {dgv.Columns.Count}");

设置数据源后,数据网格视图中的列数仍然为零。
我做错了什么?

【问题讨论】:

  • 您要向什么添加网格?尝试将网格添加到表单中,列应该会显示出来。 DataGridView 是一个 UI 控件,在显示之前不会添加列/行。
  • private BindingSource source = null;(作为字段)source = new BindingSource() { DataSource = dt }; dgv.DataSource = source;。作为一个字段,以便您以后可以访问它。如果您以后不需要它(对于 CurrencyManager 或其他东西),请就地声明它。您始终可以将 dgv.DataSource 转换为 BindingSource。

标签: c# winforms


【解决方案1】:

您可以创建一个 DataTable 并为其提供一些列,然后将此 DataTable 添加为 datagridview 列

DataTable dt = new DataTable();  

一旦你声明它构建一个这样的函数:

void createDataTable()
{
    dt.Columns.Add("column1");
    dt.Columns.Add("column2");
    yourdatagridview.DataSource = dt;
}  

最后一次调用表单 cunstructor 中的函数:

createDataTable();

【讨论】:

    猜你喜欢
    • 2012-03-02
    • 1970-01-01
    • 2021-07-19
    • 1970-01-01
    • 2011-06-15
    • 2011-05-21
    • 1970-01-01
    • 2021-02-20
    • 1970-01-01
    相关资源
    最近更新 更多