【问题标题】:Datagridview rowcount showing 0 even when there is a valid datasource即使存在有效的数据源,Datagridview 的行数也显示为 0
【发布时间】:2024-01-16 19:08:01
【问题描述】:

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

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

谁能告诉我这里哪里出错了?

【问题讨论】:

    标签: winforms data-binding datagridview rowcount


    【解决方案1】:

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

    【讨论】:

    • 我也面临同样的问题,我在tablelayout中显示数据网格,你能告诉我解决方法吗?
    • 你是怎么做到的,请让我们现在我的网格视图在选项卡中,并且总是返回 1 行数如何计算 TABS 中存在的网格视图的行数
    【解决方案2】:

    改用此代码:

    BindingSource bindingSource = new BindingSource();
    bindingSource.DataSource = resultDt;
    
    dgResult.DataSource = bindingSource;
    flowLayoutPanel.Controls.Add(dgResult); 
    
    var c = dgResult.Rows.Count;
    

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

    【讨论】:

    • 很遗憾,这并没有解决问题。
    • 我的猜测是您在绑定数据之前会以某种方式处理数据。发布填充数据表的代码,我会看看。确保您省略了连接字符串并包含您的声明,以便我可以查看变量的范围。