|
中继器实现某一行前后插入行的操作提示1:本篇教程不适合新手,以及未掌握中继器、动态面板、全局变量、局部变量、系统变量等使用的…新手。
提示2:本篇教程中,动作设置的具体细节,请参考文末源文件。 我们知道中继器可以实现列表,对于平常所见到的表格可以非常容易的实现。 并且,还可以通过中继器的一些交互动作实现添加、删除、更新、筛选与排序的操作。 但是,没有插入行的操作。 偶尔会在某些群里看到有人提出这样的需求:我要插入啊!我要在中间那个地方插入啊! 好吧! 我教你怎么插入。 先看一下插入的效果。 提示:因为AxureRP8没有在右键触发交互时屏蔽浏览器菜单(Axure RP 7是可以的),所以需要点一下屏幕中菜单以外的位置,才能看到自己的菜单。 接下来,我们来实现这个交互效果。 这里涉及到一些功能,我先来做一下描述: 实现中继器列表每行包含显示状态和编辑状态; 实现选项菜单; 实现点击编辑按钮时,转为编辑状态; 实现点击保存按钮时,更新当前行数据; 实现点击删除按钮时,删除当前行数据; 实现中继器某一行中点击鼠标右键时,在鼠标指针所在位置显示菜单; 实现点击菜单中前面插入选项时,在行前插入新行并为编辑状态; 实现点击菜单中后面插入选项时,在行后插入新行并为编辑状态。 根据上方的描述,我们来分步实现每一个功能。 一、实现中继器列表每行包含显示状态和编辑状态。 1、放入中继器并命名为“List”,双击打开中继器,在中继器的编辑区放入5个矩形并命名; 2、将前面的4个矩形全选,点鼠标右键,选择转换为动态面板,命名为“RowPanel”; 3、双击动态面板将“State1”名称改为“Show”,点中这个状态后,点击“重复”; 4、将新出现的状态命名为“Edit”,并且将状态中的所有矩形的命名去除,再添加三个文本框到前3个矩形上,分别命名。 现在中继器中所有元件组成如下: 5、在属性中为中继器“List”添加一些数据。 提示:上图中能够看到,数据集中有一列名为“IndexText”的数据,这是实现插入效果的关键,用途在后面说明。 6、在【每项加载时】为中继器添加基本交互,让列表能够显示中继器中的数据。 7、在页面编辑区中,添加4个矩形作为表头,此时,已经正常显示了列表内容。 二、实现选项菜单。 添加两个矩形,作为菜单选项,并转换为动态面板(也可以组合);命名为“MenuPanel”后隐藏。 到这里所有的元件,准备完毕。 三、实现点击编辑按钮时,转为编辑状态。 编辑按钮添加【鼠标单击时】为“MenuPanel”【设置面板状态】为“Edit”,并且通过【获取焦点】的动作,将光标进入姓名输入框“NameInput”。 四、实现点击保存按钮时,更新当前行数据。 五、实现点击删除按钮时,删除当前行数据。 六、实现中继器某一行中点击鼠标右键时,在鼠标指针所在位置显示菜单。 为中继器中的动态面板“RowPanel”添加【鼠标右击时】的交互,设置动作为【移动】选项菜单“MenuPanle”【到达】鼠标指针所在的位置;并且,【显示】选项菜单“MenuPanle”。 不过,这里为了能够在当前行的前后进行插入,我们需要通过全局变量“Temp”记录一下当前行的编号,也就是前面提到的数据集中的“IndexText”。 七、实现点击菜单中前面插入选项时,在行前插入新行并为编辑状态。 提示:此处为前面插入的关键步骤。 我们思考一下:在某一行的前面插入一个新行,从编号的角度来说,当前行的编号和新插入行的编号应该是什么样的呢? 我想是这样:插入位置以及之后每一行的编号都要增加1,而新插入行的编号为插入位置的行编号。 所以,在这里,我们需要处理行的编号,将所有大于等于插入位置行编号的行,现有编号都增加1。 这个处理,通过按【条件】【更新行】动作来实现。 提示:还记得我们将插入位置的行编号存入到了“Temp”变量中吗? 然后,通过【添加行】添加一个编号为插入位置行编号的行。 *,别忘了【隐藏】选项菜单“MenuPanel”。 八、实现点击菜单中后面插入选项时,在行后插入新行并为编辑状态。 提示:此处为后面插入的关键步骤。 后面插入和前面插入的过程差不多。 区别在于改变编号的逻辑。 后面插入时,插入位置自身编号不变,所以是将行编号大于插入位置编号的行进行编号增加1的操作。 然后,将变量中保存的编号也需要增加1,和新插入行的编号保持一致。 并且,插入的行的编号也是插入位置行编号增加1之后的编号,即变量中的新编号。 不过,到这里,大家会发现插入的行,还是在列表最下方出现。 九、添加排序 我们还需要对列表按编号升序排列,这个排序效果应该是中继器加载时就能够生效的。 十、设置插入的行为编辑状态 【添加行】动作会导致中继器列表刷新,所有行都变为正常显示状态。 如果想在插入行之后,新行为编辑状态,我们需要在中继器【每项加载时】,如果行编号是变量中保存的行编号(即新插入行的行编号),将动态面板“RowPanel”的状态设置为“Edit”。 这里要注意,因为是新增了一个用例,“Case2”会自动为“Else If”,需要在用例名称上点击鼠标右键,选择【转换为IF…】的选项进行转换。 十一、清空变量 当完成插入行的数据编辑,点击保存按钮时,中继器列表也会刷新,此时需要清空变量,以免因变量中存有编号,将对应的行转为编辑状态。 到这里,所有的交互全部设置完毕。 贵阳航洋动漫职业学校是贵阳市教育局批准(贵阳市教[2010]15号)设立的跨专业(包含计算机平面设计、动漫与游戏制作、影像与影视技术、绘画等专业)、多门类、全日制中等专业职业学校,同时也是一所实行准军事化管理的学校。 |





