【问题标题】:How to get visible row count of DataGridView after BindingSource.Filter?如何在 BindingSource.Filter 之后获取 DataGridView 的可见行数?
【发布时间】:2009-02-04 00:16:33
【问题描述】:

我有一张桌子,上面有 1640 件物品。我设置了

bindingSource.Filter = "some filter query string";

并且大部分行消失,例如留下 400 行。我希望能够告诉用户“显示 1640 个项目中的 400 个”,因为他们单击了一些文本框,这些文本框更改了过滤器字符串,因此哪些行在 dataGridView 对象中可见(很像 iTunes,但用于医疗数据,而不是流派/艺术家/专辑过滤歌曲)。

我尝试了 bindingSource.Count,无论过滤器字符串设置为什么,它始终为 1640(即使根据需要显示的行数更少)。我尝试遍历 dataGridView.Rows 中的所有行并仅计算可见的行,但总和仍为 1640。

我在哪里可以获得这些信息?

请注意,我没有使用 SQL,但 bindingSource.DataSource 是来自包裹在 DataTable 周围的 DataView 的 DataSource(来自从 XML 读取的数据集)。

【问题讨论】:

  • 我遇到了一个错误,即该代码除了一开始就没有被调用!哎呀!至少有两种方法可以找到计数。看我的回答。

标签: .net xml winforms datagridview c#-2.0


【解决方案1】:

试试这个:datagridviewname.Rows.GetRowCount(DataGridViewElementStates.Visible);

【讨论】:

  • 此解决方案比公认的答案要好得多,因为它不会复制数据表。无需复制表,因此使用的内存最多是只有一个表的两倍。
【解决方案2】:

贾里德,

我最近不得不做这件事。对我有用的是在我应用过滤器后使用 DataGridView.Rows.Count 属性。

您是否将数据源设置为 BindingSource 或 DataGridView 的 DataSource 属性?它应该是 BindingSource。

HTH -杰

【讨论】:

    【解决方案3】:

    我搞砸了其他事情。杰是对的:

    dataGridViewCases.Rows.Count
    

    像这样工作:

    bindingSource.Count
    

    【讨论】:

      【解决方案4】:

      您只需要使用 bindingSource 的 Count 属性...

      ExampleBindoneSource.Count()
      

      【讨论】:

      • 这是一个很好的答案。通过执行“var bindingSource = (BindingSource)DataGridView1.DataSource;”获取绑定源。并将其放入“DataGridView_DataBindingComplete”事件中。
      【解决方案5】:

      如何将过滤后的项目添加到单独的 DataTable 中并对过滤后的项目进行计数。

      【讨论】:

        猜你喜欢
        • 2013-04-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-29
        相关资源
        最近更新 更多