2012-06-26 64 views
2

我有一个动态创建的DataGridView,它有一个绑定了一行的有效DataSource。但是,当我在DataGridView上进行行计算时,它将返回0。即使有一个有效的数据源,Datagridview rowcount也会显示0

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

有人能告诉我哪里可能会出错吗?

回答

5

我发现了这个问题。我在未选中的标签页中显示网格。除非网格可见,否则不会引起rowadded事件(这很奇怪!)durnig数据绑定。在执行数据绑定之前,我选择了标签页,并且行计数工作。

+0

我面临同样的问题,我在tablelayout中显示datagrid,你能告诉我解决它的方法吗? – Mogli

+0

你如何做到这一点,你可以让我们现在我的网格视图是在选项卡中,并返回1总是行计数如何计数存在于TABS中的gridview行 –

2

使用此代码来代替:

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

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

var c = dgResult.Rows.Count; 

绑定源是何等的负责与控制同步数据。你想使用它,而不是试图直接将表分配给控件。

+0

不幸的是,没有解决问题。 – naspras

+0

我的猜测是你在某种程度上在你的数据被绑定之前处置掉了。发布填充数据表的代码,我会看看。确保你省去了连接字符串并包含了你的声明,所以我可以看看变量的作用域。 – KreepN

相关问题