大家在使用Excel或者 WPS 时,遇到表格数据需要进行筛选时,都可以通过列表头进行组合筛选来得到想要的结果。
在ToB的应用中,这种场景也是经常存在,特别是在财务模块的界面操作。
那通过Axure中继器如何来实现呢?
先看一下效果:
特别说明:这个效果需要在Axure10中实现,Axure9好像还差点意思…
【思路】
1、需要把表格的每一列的内容去重后,加在到表头筛选的下拉列表中;
2、在进行表头筛选时,选择某些内容后,点击确定,在数据的中继器中,增加筛选器即可。
【需要的组件】
1、一个住数据的中继器(rp_DataList)
2、一个或多个表头筛选的下拉组件组合,包括:(需要做几个表头筛选就放几组这个下拉组件组合,这里只列举一组)
a.一个容器(Panel_FirstName)
b.一个空的中继器(rp_Name)
c.一个按钮的组合
如下图:
说明:Panel_FirstName默认是隐藏的,只有点击筛选按钮时显示。
【交互】
一、现在要解决的是,如何动态加载这一列的内容到这个筛选的下拉的中继器中?而且是需要去重的。
可以在这一列的显示内容的框的loaded事件中,写如下交互:
说明:
1、双击rp_DataList中继器,进入到显示内容的编辑界面,在加载姓名的这个Rect中的loaded进行对下拉内容中继器进行增加内容;
2、rp_Metial中继器是下拉显示姓名的中继器,判断这个中继器中的是否包含了当前行的姓名内容,如果没有,则在这个rp_Metial增加一行,内容就是rp_DataList中继器当前行的内容
3、标记rp_Metial中继器所有行(后面重置的时候有用)
二、r’p_name(下拉选项内容的中继器)的每项加载交互如下,目的是让按钮随着下拉的内容不同而显示到不同的位置。
三、复选框的交互,同样需要在loaded这个交互中判断,如果是选中了,则需要对rp_Datalist增加筛选器。
这里说明一下:smart的含义:就是同一列如果有多个条件时是OR的关系,也就是 match any;但是和其他列的筛选条件是and的关系,即如下:
(column1 = =’1′ or column1 ==’2’)and (column2 ==’3′ or column2 == ‘4’)
这个功能,Axure9好像没有。
另外:复选框我是用两个组件组合的才有这样的效果。
四、“确定”按钮 的交互
说明:
首先是移除这一列的所有筛选条件,移除筛选器时,一定不能选择 ALL ,只能选择这一列的。
Fire Event是触发下拉中继器那个复选框的”loaded”的事件,loaded事件是会对中继器中每一行遍历一次的。
五、表头的筛选按钮的交互
说明,这个比较简单,就是显示这个下拉的内容
如果需要在其他列增加筛选效果,也是可以按照文中的这一列一样进行复制,改字段即可。
这个有点复杂,不太好说清楚,附上源文件:
通过网盘分享的文件:标头筛选_10_RP10.rp
链接: https://pan.baidu.com/s/1AeprKgysrcRb1eC5i2QgQw 提取码: ndv4
交互说明中第二条提到rp_Metial中继器,这个中继器组件在组件里面没有呢?这个看交互设计是局部变量,用来等量代换rp_name的,所以不清楚这个原件具体的用法用途有些什么含义?