在InfoPath 2010中利用ServerInfo类实现相对URL

本文将为你介绍InfoPath对象模型中的一个新成员,“ServerInfo”类。对于发布到SharePoint服务器上的InfoPaht表单来说,该类的成员可以为你提供相应网站的上下文。有关这个新类的文档可以在这里找到。

在下面的例子中,我将演示如何利用该类的成员在你的表单中以相对URL的方式提交数据。这样,我们就能把一个网站集打包成一个WSP,并移动到新服务器上了。由于是相对地址,所以移动后提交所使用的数据连接也会自动指向新服务器。

初始设置:

为了确保我们的的表单模板无论是在迁移前还是迁移后都能正确的关联到我们的SharePoint表单库,我将其发布为一个内容类型(http://office.microsoft.com/zh-cn/infopath-help/create-a-sharepoint-library-or-site-content-type-for-your-form-template-HA010103005.aspx)。将表单以网站内容类型的方式发布为沙箱解决方案是InfoPath 2010的一个新功能。

然后,我将该内容类型关联到适当的SharePoint 表单库上。步骤如下:

1、新建一个表单库。配合下面的代码,这里取名为SubmittedTimeCards

2、打开刚创建好的表单库

3、打开位于功能区中库标签下的库设置。

4、打开“高级设置”并将“是否允许管理内容类型”选为“是”。

5、在“内容类型”一节中选择“从现有网站内容类型中添加”。

6、添加刚刚你发布到SharePoint服务器上的内容类型。

为方便用户操作,最好是将其设置为默认内容类型。

例子:

对应上一篇中船舶租赁表单,其提交按钮的代码如下:

 

        public void FormEvents_Submit(object sender, SubmitEventArgs e)
        {

            FileSubmitConnection fileSubmit = (FileSubmitConnection)this.DataConnections["SharePoint 库提交"];
            fileSubmit.FolderUrl = this.ServerInfo.SharePointSiteUrl.ToString() + "SubmittedTimeCards/";
            fileSubmit.Execute();

            // 如果提交操作成功,则设置
            e.CancelableArgs.Cancel = false;
            // 在此处编写代码。
        }

这样一来,就可以在不同的网站中使用该表单了。因为其数据源地址是一个相对文件夹。

 

以下为在Search子网站中的表单库里新建:

点提交后:

以下是同一个内容类型,在根网站的表单库中新建并提交后:

这就是相对URL带来的好处。

希望对你有帮助!

 

参考资料

Using Relatives URLs with the ServerInfo Class in InfoPath 2010

Introduction to Sandboxed Solutions-Sort data in repeating tables using managed code

posted @ 2010-08-12 23:54  Sunmoonfire  阅读(2050)  评论(3编辑  收藏  举报