最新学习整理Repeater,网上也能找到一些实现排序的帖子,但是对于不熟悉中继器的同学来说,直接上手还是有点难度的。我也遇到一些坑,特整理记录下来,共同学习。学习之前最好了解下中继器的各个属性以及函数的含义。

工具:Axure8.0

学习目标:

如下图所示,通过点击箭头图标实现位置调整,每次点击箭头相邻两行调换顺序(点击第一行,即“高等数学”顺序不变)。

Axure Repeater系列---排序

知识点:

(1)全局变量设置与赋值

(2)表格顺序调整

要实现上述顺序调整功能,我们逐步来进行:

Step1:Axure工作区拖入“repeater”控件,命名为:“StuRepeater”,然后将Sturepeater填充数据,第一列取名“stuid”,第二列取名:“stutitle”,第三列取名:“stuscore”。注意,列名称不要用中文。

Axure Repeater系列---排序

Step2:双击“Sturepeater”,进入中继器的编辑区,依次拖入三个box,命名为:Stuindex,StuTitle,StuScore。这三个box对应Sturepeater中的三列数据。为了表格美观,我们再拖入一个box,可以不命名,然后再放入向上的箭头,箭头用来点击排序。box的长统一设为100,宽设为30,箭头长度设为25。

Axure Repeater系列---排序

Step3:给StuRepeater赋值,将设置的值和编辑区的box关联起来。

Axure Repeater系列---排序

赋值关联之后,预览工程,就可以看到给Sturepeater设置的值可以正常显示了。为了显示的更加清晰,我们在Sturepeater上方设置表头,并分别命名为:序号、科目、分数、排序。

通过前面3步的,我们已经完成了准备工作,下面划重点:如何实现排序功能?

思路:通过调整“序号”一列中的数字,然后利用repeater控件自带的sort排序功能进行升序(也可以是降序)进行排列即可实现。

示意图:

排序前:

Axure Repeater系列---排序

举个栗子:点击“通信原理”所在行的箭头,将云计算和通信原理两行进行位置调换。只需要将“通信原理”所在行的序号更新为“3”,而将“云计算”所在行的序号调整为4,见下图:

调整序号:

Axure Repeater系列---排序

最后使用repeater控件的sort按序号列升序排列即可实现。

有了思路之后我们来进行实施。

Step4:添加一个全局变量GloableIndex。这个全局变量用来存储中继器控件的item.index值,item.index的值是不会变的,第一行为1,第二行为2,第三行为3,第四行为4,不管怎么调整表格顺序,item.index的值始终不变。

Axure Repeater系列---排序

选中“Global Variables...”,添加全局变量“GlobalIndex”,并赋初始值为0。

Axure Repeater系列---排序

Step5:设置箭头的点击事件。回到中继器的编辑区,给箭头添加OnClick事件。

Axure Repeater系列---排序

解读:

(1)全局变量赋值。GlobalIndex赋值为点击箭头所在行的item.index值(第一行值为1,第二行值为2,第三行值为3,依次类推)

(2)点击箭头所在行的序号调整。由于我们次案例实现向上调整顺序,需要把点击箭头所在行的序号“减一”,实现方法:

Axure Repeater系列---排序

 

(3)点击箭头相邻上一行的序号设置为全局变量GlobalIndex的值(值为点击箭头所在行的item.index值,即所在行号)。即把相邻上一行的序号调整为点击箭头所在行的序号。

Axure Repeater系列---排序

其中“where[[TargetItem.index == GlobalIndex-1]]”,就是用来找到点击箭头所在行的相邻上一行。划重点:这里的条件一定要选择TargetItem.index,千万不要选择item.index。我一开始就在这里踩了坑,选择了item.index是无法实现顺序的正确调整的

(4)点击箭头所在行的序号“减一”

Axure Repeater系列---排序

划重点:这里的条件一定要选择TargetItem.index,千万不要选择item.index。我一开始就在这里踩了坑,选择了item.index是无法实现顺序的正确调整的

(5)对中继器按序号重新升序排序

Axure Repeater系列---排序

Property选择中继器的第一列stuid

Sort as选择Number

Order:选择Ascending,即升序

(6)点击第一行的时候顺序不更新。只需要设置个if条即可

Axure Repeater系列---排序

即,只有点击箭头所在行的行号值大于1时才进行顺序更新。

通过以上步骤即可实现最初的学习目标。

为了更好的理解中继器item.index的值,可以把这个值输出显示出来,通过显示可以看到无论怎么调整顺序,item.index各行的值都是不变的。

Axure Repeater系列---排序

PS:需要源文件的伙伴可以留言,留下邮箱or其他联系方式。欢迎交流!!

相关文章: