跨页全选需明确实际作用范围
别名: 全选当前页 · 选择全部结果 · select all pages
概念解释
列表分页之后,「全选」有两种完全不同的集合:看得见的这一页,以及筛选条件下尚未渲染的全部。跨页全选必须把实际圈中的集合说清楚——是「本页 20 条」还是「符合条件的 3,412 条」——并在人执行破坏性动作前再重复一遍。它不是进入批量时页面要不要变,也不是计数条要不要常驻;它专管全选这个动作的指称范围。打标签、拖拽排序都不使用这套全选语义。
机制
人把「全选」理解成自己看见的那一摊。分页把其余对象藏进页码里,筛选把其余对象藏进查询里,两种隐藏都会让「全部」的外延膨胀到视线之外。若勾选框只把当前页打上勾、文案却写「全选」,或反过来一键选中了几千条却只在当前页显示勾,指称和集合错位。后续删除、导出、授权会按真实集合执行,人按可见集合承担责任,事故出在两者的差。半选状态(部分页已选)再叠一层:人以为「全选」是补齐剩余,系统可能是把已经挑过的选择清掉重来。
怎么研究
用多页结果(每页少量、总盘大量)做删除或导出。比较三种全选:只作用于当前页并写明、作用于全部结果并写明、作用于全部结果但界面只勾当前页。
自变量:全选的真实集合、文案是否包含绝对数量、执行前是否二次写明范围。 因变量:执行后实际被作用的条数与口头预期之差、是否出现「我以为只是这一页」的事后报告。
实验室若总条数只有几十,跨页错误不够痛。要把总量做到人不可能记住每一条。筛选中途改变后再点全选,是最容易测出「全部」指哪一段的时刻。不要用点击「全选」的速度当指标,那测的是控件找不找得到。
边界
不分页、一次渲染完的短列表,全选等于可见集合,范围句可以省略数量以外的说明。服务端无法在超时内枚举「全部」时,不能提供假的跨页全选,应改成「选择已加载的 n 条」或要求收窄筛选。权限不足的项若被算进全选集合却在执行时跳过,范围声明必须预先排除它们,否则人会以为授权已经覆盖。全选邮件、全选搜索结果这类集合会随外部变化,执行时应锁定快照并在确认里写「以确认时的 n 条为准」。
怎么落地
- 把「全选」拆成两个明确动作,或一个动作两步确认:「选择本页 n 条」与「选择符合当前筛选的全部 N 条」。禁止只用一个无数量的「全选」。
- 跨页全选后,当前页勾选框全部勾上,同时用文案写清还有未渲染的项已被计入;翻页时已计入的项保持选中外观。
- 删除、导出、改权限的确认句重复绝对数量和筛选条件,例如「将删除当前筛选下的 3,412 条,不只是本页」。
- 验证:在第 1 页点全选后问「会作用多少条」;再执行一次只想删本页的任务,看有没有人误用跨页全选。预期数量与服务器实际作用数量必须一致。