You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DataGridView无法显示DataTable数据,绑定后行数仍为0

DataGridView绑定DataTable后Rows.Count为0的解决方案

问题描述

我正尝试将DataGridView绑定到DataTable,但遇到了问题,于是编写了一个极简示例代码:

DataTable dataTable = new DataTable();

dataTable.Columns.Add("ID", typeof(int));
dataTable.Columns.Add("Name", typeof(string));
dataTable.Columns.Add("Age", typeof(int));

dataTable.Rows.Add(1, "John", 25);
dataTable.Rows.Add(2, "Jane", 30);
dataTable.Rows.Add(3, "Bob", 40);

DataGridView dataGridView = new DataGridView();
dataGridView.DataSource = dataTable;

然而执行完代码后,dataGridView.Rows.Count仍然为0。我还尝试了其他方法(使用带RefreshBindings的BindingSource、关闭AutoGenerateColumns等),但都无效。请问如何用DataTable填充DataGridView?我是不是忽略了什么关键点?

解决方法

核心问题是你创建的DataGridView控件未被添加到窗体的控件集合中。WinForms控件只有在加入容器(如Form、Panel)的Controls集合后,才会触发数据绑定的完整初始化流程,否则绑定逻辑不会真正执行,导致Rows.Count为0。

正确实现方式

方式1:代码创建并添加DataGridView到窗体

// 示例代码放在Form的构造函数或事件方法内
DataTable dataTable = new DataTable();

dataTable.Columns.Add("ID", typeof(int));
dataTable.Columns.Add("Name", typeof(string));
dataTable.Columns.Add("Age", typeof(int));

dataTable.Rows.Add(1, "John", 25);
dataTable.Rows.Add(2, "Jane", 30);
dataTable.Rows.Add(3, "Bob", 40);

// 使用BindingSource作为数据绑定中间层(推荐做法)
BindingSource bindingSource = new BindingSource();
bindingSource.DataSource = dataTable;

// 创建DataGridView并配置
DataGridView dataGridView = new DataGridView();
dataGridView.Dock = DockStyle.Fill; // 设置停靠,确保控件可见
this.Controls.Add(dataGridView); // 关键步骤:将控件加入窗体容器

// 绑定数据源
dataGridView.DataSource = bindingSource;

// 此时Rows.Count会返回3
Console.WriteLine(dataGridView.Rows.Count);

方式2:使用设计器添加DataGridView

如果已经在设计器中将DataGridView拖到窗体上,直接绑定即可,无需手动添加到Controls集合:

DataTable dataTable = new DataTable();
// ... 填充DataTable代码同前

BindingSource bindingSource = new BindingSource();
bindingSource.DataSource = dataTable;

// 假设设计器中DataGridView的名称为dataGridView1
dataGridView1.DataSource = bindingSource;

注意事项

  • 不要关闭AutoGenerateColumns(除非你手动定义了所有列),否则即使绑定成功,也无法看到列和数据。
  • 使用BindingSource作为中间层,能提升数据绑定的稳定性,还支持排序、筛选等功能,是WinForms数据绑定的标准实践。

内容的提问来源于stack exchange,提问作者idude

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 05:15:18