C#结合SQLite实现DataGrid分页:最后一页功能求助
解决SQLite分页最后一页加载问题
有两种可靠的方式实现最后一页仅加载最后≤50条数据:
方法一:通过总记录数计算最后一页起始位置
先查询表中总记录数,再计算最后一页的起始行索引,复用现有RefreshGridView方法加载数据:
- 先实现获取总记录数的逻辑(可在DAL中新增单值查询方法,或直接执行SQL):
// 假设DAL.SelectScalar用于执行单值查询,返回总记录数 int totalRows = Convert.ToInt32(DAL.SelectScalar("SELECT COUNT(*) FROM Sales"));
- 修改
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
相关产品推荐
相关产品推荐

