【问题标题】:How to do pagination in DataGridView but not fetch all data at first如何在 DataGridView 中进行分页但首先不获取所有数据
【发布时间】:2020-02-02 12:14:35
【问题描述】:

我想在 datagridview 上用 C# 进行分页。我做了一些研究,所有这些都像this 我必须首先从 sql 获取所有数据到 c#,然后进行分页。我想在页码达到时按需获取记录。例如,如果我的 PageSize 为 10,我不想在显示前 10 条记录时获取接下来的 10 条记录,并且一旦用户单击“下一步”,则使用某些 sql 查询或存储过程获取接下来的 10 条记录。 我正在使用 Sql Server 2018 我的目标是最小化内存占用,以便在处理大量数据时提高应用程序的速度。目前我使用直接sql命令并通过存储过程将数据获取到datagridview;这个 SP 有一个递归命令,对于大数据来说有点重。随着时间的推移,数据库会增长,获取所有数据需要时间,因此 GUI 会变慢。所以我想我必须做分页;但只要我知道在默认分页中,所有数据仍然会被提取到内存中。但我想获取我计划在 C# WinForm 的每个页面中显示的行数

【问题讨论】:

  • 如果你想要现在的总数你可以先获取一个count。如果你想从结果集的中间获取一个块,你需要一个支持这个的服务器,可能带有 orderby、fetch 和 offset。 - 您应该告诉我们您使用的是哪个 DBMS!
  • 嗨。我正在使用 sql server 2018
  • 所以你可以试试这个:SELECT * FROM sales ORDER BY sale_date DESC OFFSET 10 ROWS FETCH NEXT 10 ROWS ONLY
  • 感谢您抽出宝贵时间分享您的问题。但是您的问题中缺少一些东西。你的目标是什么?你的困难是什么?到目前为止你做了什么?请尝试更好地解释您的问题、您的开发环境并分享更多代码或屏幕截图。为了帮助您改进查询的内容、标题和标签,请考虑阅读帮助中心的 How do I ask a good question

标签: c# sql datagridview pagination


【解决方案1】:

https://docs.microsoft.com/en-us/aspnet/web-forms/overview/data-access/paging-and-sorting/efficiently-paging-through-large-amounts-of-data-cs

我读了这篇文章,所以你需要创建一个自定义分页。它通过仅从数据库中检索需要为特定数据页显示的记录来提高默认分页的性能。

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
OldValuesParameterFormatString="original_{0}" TypeName="ProductsBLL"
SelectMethod="GetProductsPaged" EnablePaging="True"
SelectCountMethod="TotalNumberOfProducts">
</asp:ObjectDataSource>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-15
    • 2019-10-25
    • 2019-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多