在第五章节,当我们介绍函数概念并在练习中使用concat和now函数,你了解了infoPath函数。InfoPath中大多数函数都是不言自明的,表单设计者有个常见的问题,关于文本自动大小写转换的用例。你的表单可能需要它----如比较两个域(大小写敏感会影响结果)。另一个例子是强制某个域为大写或小写,即使用户没有正确输入(自动转换)。
支持这个功能的InfoPath函数叫Translate。它有三个自变量,返回转换过的文本字符串。第一个自变量定义文本字符串内容,第二个决定改变哪些字符,最后一个指定改变字符成为什么。第二个自变量中的字符被转化到第三个自变量匹配位置的字符。因为第二个位置的字符被转换来匹配第三个自变量,通过给第三个自变量null值,Translate也用来从一个字符串抽取出不想要的字符。
下面的练习帮你理解如何使用Translate转换大小写(无论用户输入什么都变成小写)。
准备:打开InfoPath Designer,创建一个空白表单。
1. 给表单添加两个文本框控件。
2. 右击第二个文本框空间打开属性。
3. 点击“默认值”,点击“插入公式”。
4. 选择“插入函数”,在“文本”类别,选择“Translate”。
5. 双击第一个“插入域”链接,选择第一个文本框(可能名为域1)。
6. 用下列文本代替另外两个“双击以插入域”:”ABCDEFGHIJKLMNOPQRSTUVWXYZ”, “abcdefghijklmnopqrstuvwxyz”。字符和引号都不能错。
注意:记住,Translate将第二个自变量转换为第三个。所以这里是将第一个文本控件值从大写转化为小写,反过来也可以做。
7. 点击“确定”两次,预览表单。
8. 在第一个文本框输入大小写结合的字符,按下Tab。
如果你想看另一个,使用Translate函数更加复杂的例子。打开13章节“SharePoint视图和仪表板”的Help Desk模板。这个表单中,创建新申请按钮有个提交规则。第一个操作就是设置RequestID域值。
Translate函数在这里使用,与另外两个函数结合,SubString、Now。
目标是创建一个申请ID,由Now函数生成但是去掉不要的字符,从返回值第六个位置开始。所以Translate函数将Now值作为第一个自变量。第二个自变量展示你想要代替的文本。任何文本如(:-或T)都会变成第三个自变量,null值。换句话说,去掉这些:-或T。
进一步讲,下面截图,第一个域是标准的文本控件,应用了Now函数,没有任何修改。第二个有应用了Help Desk表单中使用的公式更加复杂的版本。
你可以看到通过恰当地应用函数,表单去掉了不要的字符,留下月08,日期26,和代表当前小时06、分钟46、秒52。我们最后有个非常高效的方法,使用函数组合给表单ID域分配唯一的整数值。