今天工作中碰到一个诡异的问题,如下图,明明查出来是有31条数据,但是页面上缺没有显示?
一开始认为是js的问题,前台界面代码过滤了一遍,结果发现很简单,没有发现什么问题,如下:
sortOrder: 'desc',
pagination: true,
pageNumber: 1,
pageSize: 10,
pageList: [10, 20, 50],
重点转到后台,发现数据库里的确是查得到数据的,但是在分页json的阶段,却没有返回数据。
经过几个小时的调试(中间不断的被繁杂事务打扰),终于解决了这个问题,由于涉及公司的数据,就不贴源码,只把原理说明一下,供大家参考。
WITH TempTable AS ( SELECT row_number() over( ORDER BY MFContract.Id ASC ) AS RowNumber,*
FROM MFContract WITH (nolock) WHERE 1=1)
SELECT * FROM TempTable
WHERE RowNumber >0 AND RowNumber <=10
上述是一段分页取数据的代码,之前的错误在于,RowNumber获取的不对,记录获取出来4000以上的编号(其实只需要取10条数据),造成数据条数虽然有,但是返回Json的时候为空了。