# 多视图页

有时流程的表单会非常复杂,表单内容会很长,此时可以考虑根据填表逻辑将表单内容分拆为不同的分块,在infopath中需要新增视图页来实现这一点,所以我们称之为多视图页。在桌面版和移动版中我们都能通过点击标签快速定位到所需前往的视图页,这会给使用者极大的便利。



另外打印模板中的多视图页,每个视图页都会强制分页,所以多视图页也可用于打印模板中的分页处理。

总结一下多视图页的功能就是显示模板的逻辑分块以及打印模版的分页。

当前流程是否适合使用多视图页请开发者根据需求判断,当表单内容足够长时这是个不错的选择,当某块内容只有2-3行内容时就不是很合适使用视图页了,因为这会显得有些多余。

好了,现在让我们实际做一个多视图页。当前的请假流程一共只有2块内容:基本信息和出差行程,其实在这个流程里将这两部分分别用一个视图页制作表单并不合适,内容太少没有分视图的必要,这里的案例仅仅为了演示如何制作多视图页。

# 重命名视图

首先,我们需要将原来的表单视图名称改一下以适合多视图的命名要求,选页面设计标签点击页面设置。

在弹出的对话框中设置视图名称为"1. 基本信息",其中1是序号控制视图显示顺序,基本信息是视图标签上的显示名称,视图名称命名规范参见此处

当然我们的移动视图也需要重新命名一下,现在我们模板名称应该如图

# 新建视图

接下来我们需要为出差行程新建一个视图了,先建桌面版,页面设置页点新建视图,命名为"2. 出差行程"。将新视图中默认产生的表格删除,添加一个1*1的表格并设置宽度为原来模板视图一样的宽度800(注意多个视图页宽度必须一致),然后我们从基本信息视图里将出差行程那个格子剪切复制过来。

现在原来的基本信息视图页内容如图。

不要忘记移动版也要做相同的操作,只是新视图名称是"2. 出差行程[320a]"。现在我们一共有了4个视图页,桌面版和移动版各两个。

在工作流编辑器中更新主表单后,我们就可以看一下目前的效果了。



# 控制视图可见

如果我们需要在用户选了出差的时候显示出差行程这个视图,选其他类型时候隐藏这个视图,这时候最方便的方法是使用动态脚本,这个脚本需要设置在表单根上,因为是否显示隐藏根据字段fieldType定,所以这个脚本的依赖列表填写$fieldType,脚本的内容如下

$VIEWS['出差行程'].visible($fieldType.code==='05');
1

现在我们可以查看效果了,正如所料,当用户不选类型或者类型不是出差时,出差行程这个视图页将不可见。

多视图页用于打印模板分页比较简单就不演示了,开发者只需记住每个视图页都会在新页面中打印,开发者可自行观察效果。

# 案例地址

download 流程链接
download 表单下载