前端分页列表删除当前pageNum数据后为空列表,返回上一页pageNum

文章描述了一个JavaScript函数,用于处理前端分页列表中删除指定数量数据后,如何自动计算并返回上一页或保持在首页的逻辑。通过给定的参数如总页数、当前页、每页大小和删除数量,函数动态调整新的页码。
/**
 * @function 前端分页列表删除当前pageNum数据后为空列表,返回上一页pageNum
 * @param {number} total 删除前总页数
 * @param {number} pageNum 删除前pageNum
 * @param {number} pageSize 删除前pageSize
 * @param {number} delNum 删除多少条
 */
const calcPageNum = (total: number, pageNum = 1, pageSize = 10, delNum = 1) => {
  const restNum = total - pageSize * (pageNum - 1)
  let pageNumDiff = Math.floor((delNum - restNum) / pageSize) + 1
  pageNumDiff < 0 && (pageNumDiff = 0)
  pageNum = pageNum - pageNumDiff
  pageNum < 1 && (pageNum = 1)
  return pageNum
}

let newPageNum = calcPageNum(3, 2, 10, 3) // 总数3 当前页2 一页10条 删除当前页3条数据
console.log(newPageNum) // 1 删除后当前页数组为空 返回上一页
在使用若依框架进行信息列表查询时,如果 `startPage()` 方法返回的结果为,可能的原因和解决方法如下: ### 分页参数未正确设置 `startPage()` 依赖于传入的分页参数(如页码和每页数量)来构建分页查询。如果这些参数没有正确设置或传递,可能导致查询结果为。例如,在调用 `startPage()` 时,需要确保传入有效的 `pageNum` 和 `pageSize` 参数。 ```java PageUtils.startPage(pageNum, pageSize); ``` 如果 `pageNum` 设置为一个超出实际数据范围的值,或者 `pageSize` 设置为 0,可能会导致查询结果为[^2]。 ### 数据库中无匹配数据 如果数据库中确实没有符合查询条件的数据,那么即使分页参数正确,查询结果也会为。此时需要检查 SQL 查询语句是否包含正确的过滤条件,并确认数据库中是否存在符合条件的数据。 例如,以下 SQL 片段中的条件可能过于严格,导致没有数据被选中: ```xml <if test="deptName != null and deptName != ''"> AND dept_name like concat('%', #{deptName}, '%') </if> ``` 可以尝试放宽搜索条件或直接执行 SQL 语句查看是否有数据返回[^1]。 ### 分页插件配置问题 若依框架通常依赖 MyBatis 的分页插件(如 PageHelper)来实现分页功能。如果插件未正确配置或版本不兼容,可能导致分页查询失败。需要确保项目中引入了正确的分页插件依赖,并且配置文件中启用了分页支持。 例如,在 Spring Boot 项目的配置类中添加以下代码以启用 PageHelper: ```java @Configuration public class MyBatisConfig { @Bean public PageInterceptor pageInterceptor() { return new PageInterceptor(); } } ``` 此外,还需要检查是否在查询前正确调用了 `PageHelper.startPage()` 方法,并确保该方法紧跟查询语句执行[^2]。 ### 查询逻辑与分页顺序错误 在某些情况下,分页逻辑可能与实际查询逻辑冲突。例如,如果在调用 `startPage()` 后又执行了其他非查询操作,可能导致分页失效。因此,必须确保 `startPage()` 紧接在查询语句之前调用,并且只对单次查询生效。 ### 前端请求参数异常 如果前端传递的分页参数(如 `pageNum` 或 `pageSize`)存在异常(例如负数、非数字等),也可能导致后端无法正确解析并返回结果。建议在接口层增加参数校验逻辑,确保传入的参数合法。 例如,在 Controller 层添加如下校验: ```java @GetMapping("/list") public ResponseEntity<?> list(@RequestParam int pageNum, @RequestParam int pageSize) { if (pageNum <= 0 || pageSize <= 0) { return ResponseEntity.badRequest().body("Invalid page parameters"); } // 调用 service 层进行分页查询 } ``` ### 总结 综上所述,`startPage()` 方法查询结果为的原因可能包括:分页参数未正确设置、数据库中无匹配数据分页插件配置问题、查询逻辑与分页顺序错误以及前端请求参数异常。针对这些问题,可以通过检查分页参数、验证 SQL 查询语句、确认插件配置、调整查询顺序以及加强参数校验等方式进行排查和修复。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值