You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#结合SQLite实现DataGrid分页:最后一页功能求助

解决SQLite分页最后一页加载问题

有两种可靠的方式实现最后一页仅加载最后≤50条数据:

方法一:通过总记录数计算最后一页起始位置

先查询表中总记录数,再计算最后一页的起始行索引,复用现有RefreshGridView方法加载数据:

  1. 先实现获取总记录数的逻辑(可在DAL中新增单值查询方法,或直接执行SQL):
// 假设DAL.SelectScalar用于执行单值查询,返回总记录数
int totalRows = Convert.ToInt32(DAL.SelectScalar("SELECT COUNT(*) FROM Sales"));
  1. 修改btnLast_Click事件代码:
private void btnLast_Click(object sender, EventArgs e)
{
    int totalRows = Convert.ToInt32(DAL.SelectScalar("SELECT COUNT(*) FROM Sales"));
    // 计算最后一页起始行:总记录数≤50则从0开始,否则取总记录数减50
    rowstart = totalRows > rowlimit ? totalRows - rowlimit : 0;
    RefreshGridView();
}

方法二:直接用SQL语句获取最后≤50条数据

无需计算总记录数,通过倒序取前50条再正序排列,保证数据顺序与原表一致:

private void btnLast_Click(object sender, EventArgs e)
{
    // 替换[你的主键列]为Sales表实际主键(如Id),确保排序稳定
    dataGridView1.DataSource = DAL.Select(@"
        SELECT * FROM (
            SELECT * FROM Sales ORDER BY [你的主键列] DESC LIMIT 50
        ) AS Temp ORDER BY [你的主键列] ASC
    ");
}

补充说明

  • 方法一适合和现有分页逻辑(上一页、下一页)统一,保持rowstart变量的连贯性;
  • 方法二更简洁,无需额外计算总记录数,但必须指定明确的排序字段,避免数据顺序混乱。

内容的提问来源于stack exchange,提问作者Oleg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 04:10:12