2

我有一个动态创建的 DataGridView,它有一个有效的 DataSource,其中绑定了一行。但是,当我对 DataGridView 进行行计数时,它返回 0。

dgResult.DataSource = resultDt; // a datatable containing one row
flowLayoutPanel.Controls.Add(dgResult); 
int rows = dgResult.Rows.Count; // returning 0 always!

有人可以告诉我我可能在哪里出错了吗?

4

2 回答 2

5

我发现了这个问题。我在未选择的选项卡式页面中显示网格。除非网格是可见的,否则它不会引发 rowadded 事件(这很奇怪!)durnig 数据绑定。我在进行数据绑定之前选择了标签页,并且行数有效。

于 2012-06-27T15:10:23.263 回答
2

请改用此代码:

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

dgResult.DataSource = bindingSource;
flowLayoutPanel.Controls.Add(dgResult); 

var c = dgResult.Rows.Count;

绑定源负责将数据与控件同步。您想使用它,而不是尝试将表直接分配给控件。

于 2012-06-26T17:23:54.330 回答