我刚用 Axure RP9 给手头一个后台原型做数据列表时,被中继器狠狠教育了一轮。说实话,中继器这功能在 Axure RP9 里存在感一直很强,但很多新手第一次点开它,看到默认那个灰色小方块和右侧密密麻麻的数据集面板,直接就懵了:这玩意到底怎么变成一张像样的表格?而这恰恰是原型设计里最常遇到的需求——产品经理和交互设计师几乎每天都要做列表页、订单页、人员台账,如果能用中继器做出一张真正“有数据驱动逻辑”的表格,后续做筛选、分页、增删改都会顺手很多。
这篇文章我就围绕“Axure RP9 中继器新建表格”这件事,把我从踩坑到顺手做出一张动态表格的完整过程拆开讲清楚。里面会涉及中继器的基础原理、数据集怎么设计、单元格怎么绑定、表格样式怎么调,以及最后如何加上搜索筛选这类常用交互。适合刚接触 Axure RP9 中继器、正在为“表格怎么建”发愁的新手,也适合已经会拖元件、但始终没搞懂中继器数据绑定逻辑的同学。我会尽量用实际操作说话,把每一步为什么这么做也讲明白,而不是只丢给你一堆菜单路径。
1. 为什么做表格首选中继器,而不是直接画矩形
1.1 中继器到底是个什么东西
要理解中继器,你不能把它当成一个“元件”,而应该把它理解成一个“数据容器 + 列表模板”的组合体。在 Axure RP9 的左侧元件库里,它默认显示为一个写着“中继器”三个字的灰色小方块,拖到画布上以后,看起来平平无奇。但只要你双击它,就能进入一个独立编辑区域,这个区域里放着的元件会被反复渲染成多行,每行都来自一个叫做“数据集”的表格。
我习惯用一个类比来解释:中继器就像是快递柜。柜子的外观(模板)你只需要设计一次,每个柜门(行)的长相都一样,但门里塞的东西(数据)可以各不相同。Axure 做的事情就是自动把你的数据一条一条填进柜门里,然后统一展示出来。所以,如果你需要在原型里展示一组结构相同、内容不同的数据列表,用中继器是效率最高的方案。
在中继器内部,你放什么元件都行:矩形、文本框、下拉框、复选框、图片都可以。这些元件组成“行模板”,数据集中有多少条数据,中继器就会按照模板自动生成多少行。这也是“中继器新建表格”这件事的核心逻辑:你先把一行的样子画好,其余行全交给中继器复制。
1.2 表格元件和中继器表格的差别
很多人会问:Axure RP9 里不是有现成的“表格”元件吗?直接拖出来改单元格不就行了?没错,如果你只是做一个静态展示用的表头线框,表格元件拖出来改几行几列,两分钟就能做完。但它的致命弱点是:数据写死了。比如你在表格元件里填了 10 行数据,后面想改成 20 行,就得手动插入行;想按条件显示部分数据,基本做不到;想给每行加状态切换、动态增删,更是难上加难。
而中继器做出来的表格,行与数据是解耦的:数据集是数据,模板是外观,两者通过绑定关系连通。你改数据集里的数字,表格自动变;你按条件筛选数据集,表格自动只剩符合条件的行;你通过交互往数据集里加一行,表格自动多出一行。所有操作都是“数据层面”的,不需要手动去画布上移动一个像素。对于要演示交互逻辑、给开发讲数据联动的原型来说,中继器表格是唯一靠谱的选择。
1.3 用中继器建表格解决的三个核心问题
我自己在实际项目里总结下来,中继器建表格至少帮我们解决了三类高频问题。
第一类是“列表数据重复”。后台系统里最常见的用户列表、订单列表、商品列表,结构完全一致,区别只在数据内容。手动画表格不仅慢,后期调整行高、列宽、边框时还要一行一行改,谁改谁崩溃。中继器只需要改模板,所有行同步更新。
第二类是“数据状态联动”。比如表格里有个“启用/禁用”按钮,点了之后对应行的状态字段要变化,同时在视觉上有反馈。用中继器做这个,本质上是更新某一行数据集里的字段值,Axure 会根据新值自动重新渲染该行,交互能够真正闭环,演示效果完全不输高保真原型。
第三类是“筛选与搜索演示”。产品评审时最常被问到的就是:搜索功能怎么做?列表怎么支持按条件过滤?中继器配合文本输入框和筛选条件,可以在原型里实现完整的搜索交互,让评审方直观看到数据变化的演示效果,而不是靠嘴讲“这里会有搜索功能”。
2. 建表之前的两步准备
2.1 软件准备:正版授权或官方试用版即可
做这一步前,我先多说一句关于软件来源的话。Axure RP9 的完整功能并不依赖所谓特殊激活手段,官方提供的试用版本或者正规授权授权都可以完整使用中继器功能。网络上那些“破解版”“密钥”相关信息,一方面存在安全和法律风险,另一方面也没必要——对绝大多数原型设计场景来说,官方试用期或订阅方案完全够用。给出的建议是:直接从官网下载安装包,走正规渠道激活,千万别为了省一点事给自己电脑引入风险。
软件安装好之后,新建一个 RP 文件,建议先把页面命名清楚。比如“后台管理系统原型”,然后建一个“用户管理-列表页”。后面做中继器表格时,这个页面就是主战场。如果你打算做一套完整后台原型,最好把页面结构在左侧页面面板里先规划一下,否则做到一半页面结构乱掉,改起来很痛苦。
2.2 先想清楚表格要展示哪些字段
这一条看起来简单,但特别重要。中继器的数据集一旦设计得混乱,后面做筛选、增删改都会很麻烦。我的建议是,拖元件之前,先在纸上或者记事本里列一下这张表格到底需要哪些列。
比如做一张“员工信息表”,我通常会这样定义字段:
- 序号:一般不需要存真实业务数据,用中继器自动序号即可
- 姓名:文本
- 部门:文本
- 岗位:文本
- 入职日期:文本或日期
- 状态:文本(“在职”“休假”“离职”等)
- 操作:不做字段,直接用模板里的按钮
需要特别注意的是,字段名尽量用中文且简短统一,比如“姓名”就写“姓名”,不要一个写“姓名”一个写“名字”。因为中继器数据集里的列名会直接出现在你绑定的表达式中,列名一旦前后不一致,绑定就失效,排查起来极其痛苦。
2.3 从元件库拖出第一个中继器
准备工作完成后,正式开始操作。打开 Axure RP9,在左侧元件库面板中切换到 Default 元件库,往下找,在“数据”分类里可以看到“中继器”。如果找不到,直接在上方搜索框输入“中继器”,回车就能定位。
用鼠标把它拖到画布中,你会看到一个带四个圆角的小方块,中间写着“中继器”三个字。这个方块本身不是最终表格,它只是一个占位容器,实际展示多少行数据、什么样式,都取决于内部模板和数据集设置。所以先不用在意它长什么样,后面都要改。
拖出来之后,建议先在右侧“属性”面板中把这个中继器命个名,比如rptEmployee。这一步非常重要:页面里如果有多个中继器,命名混乱会让交互逻辑完全看不懂。我的习惯是统一用rpt前缀,后面跟业务含义,全小写或驼峰都可以,重点是自己和同事能看懂。
3. 中继器新建表格全过程实操
3.1 第一步:双击进入内部,把默认占位改成表格行
双击画布上的中继器,你会进入它的内部编辑状态。默认情况下,里面只有一个矩形,这代表“每一行只有一个格子”。我们要把它扩展成一个表格行,也就是“一行里包含多个单元格”。
先把这个默认矩形删掉,然后在内部画几个矩形用来模拟表格单元格。
比如我要做 6 列表格:序号、姓名、部门、岗位、入职日期、状态。那我就拖 6 个矩形,水平排列起来。这里强烈建议先不手动拖宽高,而是用“分布”和“对齐”工具把这几个矩形处理整齐。选中全部矩形,先在“样式”面板中设置固定高度,比如 40 像素,再通过工具栏上的水平分布按钮让它们间距一致。
列宽的问题也要在这里想好。如果是固定宽度表格,直接给每个矩形设置具体宽度即可,比如 100 像素、200 像素。如果是自适应宽度的表格,建议把矩形宽度设为百分比形式,但百分比计算比较麻烦,我一般先按固定像素排好,再手动调整。更省事的办法是给每个矩形设置成中继器总宽度的百分比,比如中继器宽度为 1200,序号列设 100,姓名列设 150,这样后续调整更直观。
行模板里留的矩形数量,就是表格未来每一行的列数。你在内部看到一排 6 个矩形,预览时中继器会自动按数据条数复制出多排,每排都是这 6 个格子。
3.2 第二步:编辑数据集,把表头字段和数据录进去
这是中继器表格的关键一步。先退出中继器内部编辑状态,回到画布,单击选中中继器组件。在右侧面板中,你会看到中继器特有的属性区域,其中有一个“数据”栏目,下方是“数据集”区域,旁边有“编辑数据集”按钮(有些版本显示为一排灰色的字段名和编辑图标)。
点击“编辑中继器数据集”,会打开数据集编辑器。这里有两块内容:列定义和数据条目。默认情况下,会给出一列Column0,我们需要把它改成真正的业务列名。
先添加 6 列,分别是:序号、姓名、部门、岗位、入职日期、状态。需要注意的是,我上面说“序号”这一列,如果你打算用中继器自带序号功能,可以不建这一列;但如果想完全掌控显示值,就单独建一列,后面数据填好即可。对于新手,我建议一开始不建序号列,先靠中继器的“显示序号”功能,省事。
列定义建好后,在下方的数据列表中逐行录入。比如:
- 姓名:张三
- 部门:技术部
- 岗位:前端工程师
- 入职日期:2023-06-12
- 状态:在职
再录入几行不同数据,至少 5 行左右,方便后面看表格效果和筛选逻辑。录入时注意每列的数据类型默认都是“文本”,对原型演示足够用了。日期也按文本处理,别纠结格式。
3.3 第三步:把数据绑定到单元格上
录入数据只是第一步,如果不做绑定,中继器还是会显示模板里的占位内容,数据集里的数据不会自动跑到格子里。
怎么绑定?再次双击进入中继器内部,点击第一行第一个矩形,在右侧“属性”面板中找到“文本”属性,点一下后面的“fx”按钮,打开文本编辑对话框。在编辑框里输入表达式[[Item.姓名]]。这个表达式是 Axure 中继器最核心的语法:Item.代表当前行的数据对象,后面跟列名,就能取到对应单元格的值。
按照同样方式,给其他矩形分别绑定对应的列:
- 姓名矩形:
[[Item.姓名]] - 部门矩形:
[[Item.部门]] - 岗位矩形:
[[Item.岗位]] - 入职日期矩形:
[[Item.入职日期]] - 状态矩形:
[[Item.状态]]
如果你的模板里放的是文本框,同样在“文本”属性里做绑定。绑定完成之后,可以在每个矩形上右键预览,或者直接 Ctrl+加号放大观察,看文本是否正常显示。
这里有一个新手最容易踩的坑:列名必须完全一致,包括空格和标点。如果你在数据集里把列名写成“姓名 ”(带了个空格),表达式里写[[Item.姓名]],那绑定结果就是空。排查时先检查列名,这个经验帮我节省了大量时间。
3.4 第四步:处理不需要显示的列和表格边框
回到画布预览效果时,你可能会发现,中继器模板里所有矩形都会显示出来,哪怕这一列的数据你是为了某个逻辑存的、但不想给用户看。这时候就需要用中继器的“显示列”功能。
选中中继器,在右侧属性面板的数据区域,能看到一个“显示列”的设置列表。Axure RP9 会列出数据集里的所有列,并且每个列名前面有个复选框。你勾选哪些列,预览时就会显示哪些列,没勾选的列只是不显示,但数据还在,不影响绑定和筛选。
这一步对于做复杂表格特别实用。比如我在做员工管理时,会在数据集里放一个“用户ID”字段,用于唯一标识,但不希望用户看到这一列;我只需要在“显示列”中取消勾选“用户ID”,这列就会在表格上消失,而后续做编辑、删除时依然可以根据 ID 定位到具体行。
至于表格边框,默认的行模板只有矩形,矩形本身可能没有边框或边框样式不符合预期。如果矩形之间没有网格线效果,可以进入行模板,给每个矩形设置统一的边框颜色和粗细。一般我会给矩形设置 1 像素的灰色边框,再把中间重叠的边框去掉,做法是把中间矩形的边框改成只显示右边和下边。更偷懒的做法是只给第一列显示左边框和上边框,其他列显示上边框、右边框,底部边框优先级最低,肉眼看着舒服就行。原型设计阶段不用做到像素级完美,但网格线清晰很重要。
3.5 第五步:调整行高、间距和自动换行
表格行默认高度取决于模板内矩形的高度。如果数据文本过长,比如姓名列填了一个超长的英文名,矩形宽度不够时,文本会溢出或者被截断。
解决方式是调整文本的“自动换行”属性。在行模板中,选中矩形,在右侧样式面板找到“文本”区域,勾选“自动换行”。这样当数据内容超过矩形宽度时,会自动换行展示,而不是溢出。同时,矩形高度建议设置成“自适应内容”模式,也就是不要给固定高度,而是跟着内容走,这样表格行高会根据内容自动变化。做法是选中矩形后,在样式面板中把高度设置为自适应。
还有一个影响行高的设置是中继器的“项目间距”。预览时如果你发现行与行之间隔得太大,多半是中继器样式面板里的“间距”值被设大了。选中中继器,在右侧样式面板中找到“布局”或“列表”区域,把垂直间距调成 0 或 1 像素即可。默认中继器给的行间距可能偏大,新手常常在这里困惑。
3.6 第六步:表头和整体结构
数据行搞定后,还需要给表格加一个表头。表头不要放在中继器内部,否则每一行下面都会带一个表头,那就完全错了。正确的做法是:在中继器上方画一排矩形,尺寸和行模板里的各列保持一致,分别填写“姓名”“部门”“岗位”“入职日期”“状态”等字段名。这是静态表头,永远不会滚动,下面的数据区域由中继器动态生成。
如果你需要表头固定、数据区可滚动,可以把中继器设置成固定高度,并在中继器属性面板中打开滚动条设置。这样数据行超出高度时会出现滚动条,表头保持不动。这个效果在后台管理系统原型里几乎是标配,演示时很容易给开发对齐需求。
4. 中继器表格的进阶实操:一个带搜索筛选的动态表格
4.1 表格做出来之后,最值得做的第一个交互
很多教程在这里就停住了,但在我看来,表格做出来只是万里长征第一步。真正让中继器表格在评审时发光发热的,是搜索筛选。我敢说,评审会上 80% 的问题都集中在:数据能不能筛?搜索框能不能用?状态能不能过滤?所以我在自己的项目里,做完中继器表格后一定会紧接着做筛选交互。
筛选的实现原理其实不复杂:Axure RP9 中继器支持通过交互条件过滤当前显示的数据行。比如我指定一个条件“当前行姓名包含输入框里的文本”,满足条件的行显示,不满足的隐藏。这个操作不需要修改数据集,只是改变中继器的展示范围。
要在 Axure RP9 中实现这个效果,需要四样东西:一个文本框(用于输入关键字)、一个按钮(用于触发搜索)、一个中继器(就是我们的表格)、以及一个局部变量(用于把输入框内容传递给筛选条件)。下面我按步骤拆解,你可以直接照着做。
4.2 搜索框、按钮和局部变量怎么设置
先在元页面中,在中继器上方放一个文本框和按钮,分别命名为txtSearch和btnSearch。文本框用来输入关键字,按钮用来触发事件。也可以在文本框上绑定“文本改变时”事件,实现输入即搜索,但这样容易因为每次按键都重新筛选,导致交互卡顿;按钮触发更可控,评审时也更好演示。
然后做关键一步:获取局部变量。Axure RP9 里的表达式不能直接引用文本框的当前文本值,需要先把文本框的值存到局部变量里。具体操作是:点击按钮,在右侧交互面板选择“单击时”,然后添加动作。动作类型选择“更新行”或者“添加筛选”,具体看你是想直接在现有数据上筛,还是重置后筛。我建议用“更新行”,在更新行设置的弹窗中,选择“添加筛选”选项卡。
在“添加筛选”里,点击“+ 筛选”按钮,然后在规则编辑器中,把条件设为“文本”,操作符选“包含”,值那边不要直接写死,而是点旁边的“fx”按钮,在表达式编辑器里输入局部变量。Axure RP9 中局部变量的写法是[[LVAR1]]。首次使用时,需要在弹出的局部变量窗口中,把LVAR1指向文本框txtSearch。
条件完整写出来就是:
[[Item.姓名.indexOf(LVAR1) > -1]]这个表达式表示:如果当前行的姓名字段包含输入框中的文本,indexOf 返回大于 -1 的数,条件成立,该行保留;否则隐藏。你也可以把姓名改成部门、岗位,或者同时加多个筛选条件。实际操作中,我会加“姓名”“部门”“岗位”三个条件,用 AND 连接,实现多字段组合搜索。
4.3 筛选失效或空数据时怎么办
筛选做完后,有几个常见现象需要特别注意。
第一个现象:点击按钮后表格完全变空白。这通常不是筛选代码的问题,而是局部变量没有正确获取文本框内容。检查一下按钮事件里的局部变量是否确实指向了txtSearch;另外,如果文本框的值是空字符串,indexOf 返回 0,条件永远成立,一般不会清空表格;如果表格全空,多半是条件写反了。
第二个现象:筛选条件生效,但清空搜索框后再点击,数据回不来。这是因为筛选条件还在。解决办法是再添加一个动作:点击按钮时,先执行中继器的“移除筛选”,再执行“更新行/添加筛选”。这样每次点击都会先清空旧条件,再应用新条件,数据就能正确恢复。
第三个现象是空数据时的占位提示。如果筛选结果没有数据,中继器区域就是一片空白,用户会以为原型出 bug 了。我的做法是在中继器下方或上方放置一个提示矩形,默认隐藏,当筛选结果为 0 条时,通过中继器的“载入时”事件判断显示该提示;否则隐藏。判断方式可以给中继器绑定数据条数统计字段,或者在中继器内部用一个单元格显示“未找到匹配数据”的提示,条件控制它的显隐。这个细节虽然小,但对交互完成度的观感提升非常明显。
5. 表格细节优化和常见问题排查
5.1 隔行变色、悬停高亮让表格不单调
纯白底黑字的表格,原型的观感会比较干。中继器在样式面板里提供了“交替背景色”功能,你可以在中继器的样式面板中,勾选“用交替颜色”或者类似选项,然后设置两种背景色。Axure RP9 会自动给奇偶行换色,模拟真实表格的隔行变色效果。前提是行模板里的矩形不要设置不透明背景,否则会覆盖交替色。
如果你还想做鼠标悬停高亮,做法是:进入中继器内部,选中某一行的矩形,在“交互”区域添加“鼠标移入时”和“鼠标移出时”事件。鼠标移入时设置该矩形背景色变浅,鼠标移出时恢复到原色。注意,这里的作用范围默认是“当前元件”,也就是当前行的矩形,这一操作会自动对该行生效,不会影响其他行。这是中继器行模板的天然优势,模板上的事件对所有行统一生效。
5.2 自动序号和状态标签
表格第一列通常要显示序号。与其在数据集里手动敲 1、2、3、4,不如用中继器的内置序号。在选中中继器后,右侧样式面板中查找与“序号”或“索引”相关的选项,勾选“显示序号”后,Axure RP9 会自动在左侧生成一列序号。如果你的表格列已经定义好,需要在行模板里预留一列矩形来接收这个序号值,可以把预留列的文本绑定为[[Item.序号]]或者使用中继器提供的索引变量,具体变量名可以在表达式中点击“插入变量或函数”查看。用这种方式,序号总是和数据行一一对应,删除行后会自动重排,比手写序号强得多。
状态标签我一般用条件样式来做:中继器每行状态字段有“在职”“休假”“离职”等值,可以在行模板的状态列里放一个矩形,绑定状态字段,然后通过“样式”面板中的条件样式,让不同文本值显示不同背景色。但严格来说,Axure RP9 的条件样式写起来比较长,新手可以先手动给数据集里的状态文本加前缀,比如“在职-绿色”“离职-灰色”,演示语气也够用。
5.3 中继器表格常用问题速查表
下面这张表是我做中继器表格时整理出来的高频问题,分享出来供你快速定位。
| 常见问题 | 可能原因 | 解决办法 |
|---|---|---|
| 表格行显示空白 | 单元格文本没有绑定数据集字段 | 进入行模板,检查每个矩形的文本是否为[[Item.列名]],列名是否一致 |
| 显示出来的值带中括号 | 文本属性没有使用表达式 | 用 fx 打开文本编辑框,确保输入的是表达式而不是普通文本 |
| 点击搜索后数据变空 | 局部变量未正确指向输入框 | 检查按钮事件的 LVAR1 是否绑定到了正确文本框 |
| 搜索后数据不恢复 | 筛选条件未移除 | 按钮事件中先“移除筛选”,再“添加筛选” |
| 多行之间空隙太大 | 中继器行间距设置过大 | 在样式面板中把项目垂直间距调为 0 |
| 表头跟着数据一起滚动 | 表头放进了中继器内部 | 把表头移到中继器外部,中继器单独设高度 |
| 想改一列宽度但其他列变形 | 使用了百分比宽度 | 统一改为固定像素宽度,或用中继器网格布局 |
| 删除一行数据后序号不连续 | 序号是手工录的 | 改用中继器自动序号功能 |
5.4 再分享两个关于中继器的心得
最后再说两个我在实际项目中总结出来的避坑心得。
第一个是关于数据量。中继器数据集里放三五百行数据体验尚可,但如果你塞了几千行,预览时会出现明显卡顿。原型阶段建议数据控制在几十条以内,比如 50 条左右,足以演示逻辑,又不会卡到影响评审节奏。如果确实需要演示大数据量场景,可以在“预览”设置里明显标注“此页面数据量较大”,让开发知道这里可能需要做虚拟滚动,而不是在原型里硬扛。
第二个是关于团队复用。我建议把做好的中继器表格保存成一个独立的页面或元件库文件。同一个项目里多个页面都需要表格时,直接从元件库拖出来,改一下数据集列名和绑定表达式,就能快速复用。这比每个页面重新画一遍要节省大量时间。尤其是后台管理系统这类页面结构高度相似的项目,提前做好一个“标准表格”元件,后面的交付效率会成倍提升。
你在实际跟开发对接时也会发现,中继器表格做出来的原型,因为数据是真实联动的,在评审时比静态图更能说明问题。无论是新增一行、删除一行,还是搜索、筛序,Demo 里都能真实呈现,沟通成本明显低很多。如果目前的项目里正好需要高保真交互演示,花半天时间把中继器用熟练,回报率绝对值得。