E3.14.1transfer list shows full selection设计

穿梭框适合从大集合中挑选并能看到已选全貌

别名: 穿梭框 · dual listbox · 左右选择

概念解释

穿梭框(transfer list / dual listbox)把候选放在一列,已选放在另一列,中间用加入/移出来回搬。它适合从较大集合里挑出一个需要反复核对的子集:授权角色、导出字段、可见栏目。左边回答「还能选什么」,右边回答「已经选了谁」,两问同时在视野里。多选下拉把已选收进触发器,穿梭框把已选摊成一份完整名单——当核对子集本身就是任务时,摊开比收起值钱。

看见全貌是它存在的理由。若右边只是计数、不列名字,它就不比一个带计数的下拉强。

机制

选择大子集时,人需要两份空间模型:源集合和目标集合。单列表靠勾选在同一空间里翻布尔,已选和未选缠在一起,核对「有没有漏」要在长名单里找勾。双列把已选物理分离,漏与多都变成「右边有没有这个名字」,视觉搜索的目标集更小。搬动还给出明确的方向:向右是加入承诺,向左是撤回,比在同一行上反复勾消更符合「移交」的隐喻。

全貌依赖右边真的列出每一个已选对象。摘要、折叠、只显示最近几条,都会把全貌交还给记忆,穿梭框的优势随之消失。

边界

子集很小且不需要并列核对时,标签或复选框更轻。集合极大时,两列都会变成内部长列表,全貌名存实亡——那是扫描成本问题,不是否定双列的语义。立即生效的权限用穿梭框时,搬动就是授权,需要失败回馈,不能当成表单草案。树形结构硬拆成左右两列会丢掉层级,除非列内仍保留缩进。触屏上中间的箭头按钮往往过小,搬动要靠行内动作或拖拽补上。

怎么落地

  • 核对子集是任务的一部分时用双列,并把已选列写成完整名单,不要只写「已选 N」。
  • 列标题说清两边身份(「可选角色 / 已授予」),箭头只是搬运,不承担命名。
  • 不要用穿梭框去采集两三项目,那是用重结构解决轻问题。
  • 验证:遮住左列,只看右列,问「现在生效的是谁」。说不全,全貌就没有交给已选列。

延伸

  • 同组E3.14.2 两侧列表都需要独立的搜索与批量操作 · E3.14.3 移动后的顺序是否保留需要明确定义 · E3.14.4 选项数量很大时穿梭框的扫描成本仍然很高
  • 相邻E3.06 多选下拉 · E3.10 选项数量与控件匹配
  • 站内检索transfer list · dual listbox · selected column

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/E3.14.1