【发布时间】: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。