【问题标题】:How to mimic datagridview loading in SQL Server 2005如何在 SQL Server 2005 中模拟 datagridview 加载
【发布时间】:2011-09-19 21:00:27
【问题描述】:

如果您加载大量记录,DataGridView 会在将记录一点一点地加载到 DataGridView 时保持响应。如何使用常规 DataGridView 和来自数据库的一组数据来完成此操作(由于我们的数据访问层,我不能使用直接数据绑定)。

【问题讨论】:

  • 你应该更具体,你有很多行,绑定到 gridview 需要时间,或者你想通过 ajax 加载网格以使其响应?
  • 是用于 Winforms 的 datagridview 吗?如果您可以添加使其更清晰的 winforms 标签。
  • 这是一个winforms datagridview

标签: c# sql-server winforms datagridview .net-3.5


【解决方案1】:

正如其他人所说,您几乎肯定会希望在数据访问层实现分页以从数据库返回少量数据。

一旦你有了它,你就可以考虑实现用户控制的分页(他们单击按钮以显示下一页或上一页 - 很像 StackOverflow 上的此处)或自动分页。

对于自动分页(就像您在 Excel 中看到的那样),您需要在 DataGridView 中实现虚拟模式。在blog post 中有一个很好的例子。

【讨论】:

    【解决方案2】:

    您不能简单地使用分页并仅从数据库中查询每页所需的行数吗? check this link

    【讨论】:

    • 按照我老板的要求,没有
    【解决方案3】:

    您的数据访问层需要在完成查询之前产生结果。它应该实现 IEnumerable 或 IDataReader。然后,当您绑定到它时,结果的第一页应该会很快出现。

    编写一个只获取第一行的单元测试,以及一个获取所有行的第二个单元测试。如果两个单元测试花费相同的时间,那么你的 DAL 就有问题。更改您的 DAL,使其尽早生成行。

    【讨论】:

    • 数据访问层确实实现了 IEnumerable,我的印象是它必须使用 IList 才能在 DataGridView 中使用数据绑定?
    猜你喜欢
    • 2011-06-08
    • 1970-01-01
    • 2011-06-24
    相关资源
    最近更新 更多