2

我们有一个带有 InfoPath 表单组件的 ASP.NET 应用程序,它使用 InfoPath Forms Server 将 InfoPath 表单传送到浏览器。我们没有将表单保存在 SharePoint 中,而是将 XML 表单数据提交到 ASP.NET Web 服务,该服务将数据保存为 SQL Server 2005 中的 XML 数据类型。这工作正常,加载 XML 数据没有问题返回 InfoPath 表单。

当我们尝试将旧数据(来自表单的版本 1)加载到新版本的表单(版本 2)中时,我们的问题就出现了。例如,这个新版本的表单 (V2) 有一个新的文本框字段。因为 V2 字段在 V1 XML 中不存在,所以它们在 V2 表单上可见,但被禁用且无法填写。

我们的问题是我们如何将 V1 XML 数据加载到 V2 表单中,并让用户能够完成现在出现在 V2 表单中的那些字段。

使用 InfoPath Forms Server 和存储在表单库中的表单可以实现此行为。如果更新表单模板,您可以在新模板中打开旧表单,查看新字段,并可以在新字段中保存数据。当表单 XML 数据存储在 SQL Server 中而不是表单库中时,我们需要知道如何以编程方式执行此操作。

4

1 回答 1

1

自从我做任何 InfoPath 以来已经有一段时间了,所以对此有点含糊深表歉意:

InfoPath 模板的一部分(几乎只是一个具有不同扩展名的 ZIP 存档)是一个名为“upgrade.xsl”的文件。此文件包含一个或多个 XSL 转换,用于“升级”针对早期模式版本的文档。

问题是:为什么在一个场景(SharePoint/Form Library)而不是在另一个场景(Web 服务)中应用了正确的转换?第二个过程是否可能丢失 InfoPath 用于了解源文档所针对的架构版本的标记?我相信我所指的标签是“?mso-infoPathSolution”标签(“solutionVersion”属性)。

如果确实从文档中删除了这个标签(并且您不能轻易阻止它),您可能需要“手动”应用适当的 XSL 转换。当然,如果您要处理多个版本,则可能很难确定在任何情况下都需要应用什么转换。

于 2009-03-25T19:32:05.297 回答