officeba > 单独文章


通过使用脚本自定义InfoPath 2007表单模板

如果您熟悉脚本的编写,可以通过使用 Microsoft JScript 或 Microsoft Visual Basic Scripting Edition (VBScript) 脚本语言向 Microsoft Office InfoPath 表单模板添加脚本。除了使用规则、公式、数据有效性或条件格式之外,您还可以通过添加脚本来自定义表单模板。例如,您可以添加作用如下的脚本:当用户切换 基于表单模板的表单中的视图时,创建并发送一封电子邮件。您只需通过使用脚本便可以配置表单模板以创建和发送电子邮件。

本文内容

  • 概述
  • 兼容性考虑事项
  • 设置表单模板的脚本语言
  • 每次发生事件时显示一个消息
  • 添加当用户保存表单数据时运行的脚本
  • 添加当用户提交表单数据时运行的脚本
  • 添加当用户单击按钮时运行的脚本
  • 添加当合并现有表单时运行的脚本
  • 添加用于更新现有表单的脚本
  • 添加用于其他事件的脚本

概述

您 可以通过使用规则、公式、数据有效性和条件格式来自定义 InfoPath 表单模板。虽然这些功能非常灵活,并且可以处理多种多样的任务,但还是无法执行某些任务。例如,您无法通过使用规则在用户在表单的文本框中输入值时发送一 封电子邮件。如果您需要自定义表单模板,使它具有这些功能之外的功能,并且您熟悉使用 JScript 或 VBScript 脚本语言来编写脚本,您就可以添加一个当用户打开新表单或修改基于表单模板的现有表单时运行的脚本。

向表单模板添加脚本时, InfoPath 即启动 Microsoft 脚本编辑器 (MSE),用于在表单模板中添加、编辑和调试脚本,并将光标放在所选事件上。InfoPath 会自动向该脚本添加一个事件处理程序。事件处理程序是 InfoPath 表单模板中的函数代码,用于响应表单中的用户操作或对 XML 数据所做的更改。例如,如果您希望用户将其表单保存在若干网络位置中,可以向 OnSaveRequest 事件处理程序添加一个脚本。添加当用户保存基于表单模板的表单时运行的脚本时,InfoPath 会启动脚本编辑器并向脚本添加下列某段代码。

 注释   InfoPath 添加的代码取决于您选择的脚本语言。

JScript

//=======
// The following function handler is created by Microsoft Office InfoPath.
// Do not modify the name of the function, or the name and number of arguments.
//=======
function XDocument::OnSaveRequest(eventObj)
{
// Write the code to be run before saving here.

eventObj.IsCancelled = eventObj.PerformSaveOperation();

// Write the code to be run after saving here.

eventObj.ReturnStatus = true;

}

VBScript

'=======
' The following function handler is created by Microsoft Office InfoPath.
' Do not modify the name of the function, or the name and number of arguments.
'=======
Sub XDocument_OnSaveRequest(eventObj)

' Write the code to be run before saving here.

eventObj.IsCancelled = eventObj.PerformSaveOperation

' Write the code to be run after saving here.

eventObj.ReturnStatus = True

End Sub

然后可以在事件处理程序中的适当位置添加代码,用于将表单保存到不同的网络位置。当用户保存基于该表单模板的表单时,InfoPath 将在 OnSaveRequest 事件处理程序中运行该代码。

 注释   本文提供了在表单模板中创建脚本的高级视图。要了解有关 Microsoft 脚本编辑器和 InfoPath 中使用的特定对象、方法、事件及属性的详细信息,请参阅《InfoPath 开发人员参考》。

InfoPath 自动为下列所有事件添加事件处理程序,但其中一个事件除外。

事件处理程序说明创建步骤
OnAfterChange在用户更改绑定到某个字段的指定控件中的值后,此事件运行。例如,在用户选择列表框控件中的某个项后,您可以显示自定义 HTML 任务窗格。此事件在 OnValidate 事件后运行。 右键单击表单模板上的某个控件或“数据源”任务窗格中的某个字段,指向快捷菜单上的“编程”,然后单击“OnAfterChange 事件”
OnAfterImport在用户将几个表单成功合并到一个表单后,此事件运行。通过使用 MSE 手动将 OnAfterImport 事件处理程序声明直接添加到脚本文件中。不能在设计模式下创建此事件处理程序。
OnBeforeChange在用户更改控件中的值之后和将值添加到绑定到该控件的指定字段之前,此事件运行。例如,您可以在填写重复表中的最后一行之前禁止用户添加其他行。右键单击表单模板上的某个控件或“数据源”任务窗格中的某个字段,指向快捷菜单上的“编程”,然后单击“OnBeforeChange 事件”
OnClick当用户单击与此事件关联的按钮时,此事件运行。在您向表单模板中添加按钮后,此事件可用。例如,当用户单击按钮时,您可以通过使用主要数据源的字段中的值来执行复杂计算。双击按钮控件,然后在“按钮属性”对话框的“常规”选项卡上单击“编辑表单代码”
OnContextChange当用户更改组中的字段时,此事件运行。例如,您可以在视图中显示包含有关控件的详细信息的自定义 HTML 任务窗格。当用户选择控件并按特定键(如 F1)时,代码运行。在 OnLoad 事件和 OnSwitchView 事件发生后,此事件运行。“工具”菜单上,指向“编程”,然后单击“OnContextChange 事件”
OnLoad只要用户创建新表单或打开基于表单模板的现有表单,此事件就运行。例如,当用户打开表单时,您可以将项目列表从辅助数据源复制到主要数据源。 “工具”菜单上,指向“编程”,然后单击“OnLoad 事件”
OnMergeRequest当合并基于表单模板的表单时,此事件运行。例如,您可以在合并操作过程中显示合并的表单数以向用户提供状态。 “工具”菜单上,单击“表单选项”。在“类别”列表中,单击“高级”。在“合并表单”下,选中“使用自定义代码合并”复选框,然后单击“编辑”
OnSaveRequest当用户保存基于表单模板的表单时,此事件运行。例如,当用户保存表单时,您可以将基于此表单模板的表单保存到多个位置。InfoPath 向此事件中添加另外两行代码:一行用于保存表单,另一行用于通知您 InfoPath 是否成功保存表单。“工具”菜单上,单击“表单选项”。在“类别”列表中,单击“打开和保存”。在“保存行为”下,选中“使用自定义代码保存”复选框,然后单击“编辑”
OnSign当用户将数字签名应用于表单时,此事件运行。例如,当用户签署支出报告表单时,您可以向该表单的数字签名中添加附加数据。“工具”菜单上,指向“编程”,然后单击“OnSign 事件”
OnSubmitRequest当用户提交他/她的表单数据时,此事件运行。例如,当用户单击“文件”菜单上的“提交”时,您可以将表单数据提交到安全 Web 服务。由于 InfoPath 不支持与安全 Web 服务的数据连接,因此您需要添加适用于安全 Web 服务的自定义数据连接。“工具”菜单上,单击“提交选项”。选中“允许用户提交此表单”复选框,单击“使用代码执行自定义操作”,然后单击“编辑代码”
OnSwitchView当用户打开基于表单模板的表单或切换到表单中的其他视图时,此事件运行。例如,当用户切换到特定视图时,您可以创建包含表单的主要数据源中字段中的数据的电子邮件。 “工具”菜单上,单击“编程”,然后单击“OnSwitchView 事件”
OnValidate当用户更改绑定到某个字段的控件中的值时,此事件运行。例如,当用户更改特定控件中的值时,您可以通过使用用户输入的数字以及脚本中的数字计算其他控件的新值。在 OnBeforeChange 事件处理程序运行后,此事件发生。 右键单击表单模板上的某个控件或“数据源”任务窗格中的某个字段,指向快捷菜单上的“编程”,然后单击“OnAfterValidate 事件”
OnVersionUpgrade当用户打开现有表单并且现有表单使用的表单模板的版本号低于发布位置中表单模板的版本号时,此事件运行。当用户打开现有表单时,InfoPath 检查与该现有表单相关的表单模板的版本号。如果表单模板有更新的版本号,则当用户打开现有表单时,InfoPath 运行 OnVersion 事件处理程序。例如,假设您向现有表单模板中添加新字段并重新发布该模板,并且如果用户打开现有表单,您希望该新字段添加到主要数据源中。当用户打开现有表单时,此事件会将该新字段添加到主要数据源中。“工具”菜单上,单击“表单选项”。在“类别”列表中,单击“版本控制”。在“关于版本升级”列表中,单击“使用自定义事件”,然后单击“编辑”

 

兼容性考虑事项

您不能向与浏览器兼容的表单模板 (与浏览器兼容的表单模板:InfoPath 中使用特定兼容模式设计的一种表单模板。在将与浏览器兼容的表单模板发布到运行 InfoPath Forms Services 的服务器上时,该模板受到浏览器的支持。)添加脚本。只能向其表单将在 InfoPath 中填写的表单模板添加脚本。只能通过使用托管代码来自定义与浏览器兼容的表单模板。


声明:欢迎各大网站转载本站文章,还请保留一条能直接指向本站的超级链接,谢谢!

时间:2007-07-19 21:16:20,点击:65824


【OfficeBa论坛】:阅读本文时遇到了什么问题,可以到论坛进行交流!Excel专家邮件:342327115@qq.com(大家在Excel使用中遇到什么问题,可以咨询此邮箱)。

【声明】:以上文章或资料除注明为Office自创或编辑整理外,均为各方收集或网友推荐所得。其中摘录的内容以共享、研究为目的,不存在任何商业考虑。如有任何异议,请与本站联系,本站确认后将立即撤下。谢谢您的支持与理解!


相关评论

我要评论

评论内容