zhouwul 发表于 2015-9-25 04:21:35

[SharePoint 2010 的那些事儿 – InfoPath]在数据连接中使用相对URL

  大家如果使用过InfoPath 2007的话一定遇到过下面这种场景。
  当我们在设计一张可提交到SharePoint文档库的表单时,首先要做的就是创建一个用于提交该表单的数据连接,在数据连接向导中我们需要填写该文档库的地址,如下图所示。

  这时问题就出现了,这个文档库地址只能填写绝对地址,而我们在做项目时一般都不会直接在生产环境中进行工作吧,这就导致在将表单最终部署到生产环境前我们必须将这些数据连接中的文档库地址修改为最终环境的。这无疑是相当相当麻烦的,但是没有办法,2007并没有提供可以动态获得承载表单的SharePoint网站地址的方法,但在2010中提供了,下面让我们来看看如何在InfoPath 2010中动态的创建提交连接的地址。
  要实现这一功能需要在InfoPath表单中添加自定义代码,随后通过Microsoft.Office.InfoPath.ServerInfo类来获得承载表单的SharePoint网站地址。
  Microsoft.Office.InfoPath.ServerInfo具有四个属性,分别是







     


  名称


  描述







  SharePointListUrl


  获取承载表单的文档库地址







  SharePointServerRootUrl


  获取承载表单的SharePoint服务器根地址







  SharePointSiteCollectionUrl


  获取承载表单的SharePoint网站集地址







  SharePointSiteUrl


  获取承载表单的SharePoint网站地址




  具体是调用方式很简单,大家可以参考下面这段代码。




/// <summary>

/// Submits the form to the SubmittedTimeCards form library on SharePoint and calls a function to update the Vacation

/// and Sick Balance for the employee.

/// </summary>

/// <param name="sender">The source of the event.</param>

/// <param name="e">Provides data for the Microsoft.Office.InfoPath.FormEvents.Loading event.</param>




public void FormEvents_Submit(object sender, SubmitEventArgs e)

{

      // 获取提交连接对象

FileSubmitConnection fileSubmit = (FileSubmitConnection)this.DataConnections["数据提交"];

// 动态的获取承载当前表单的SharePoint站点地址,并合成提交连接的地址


fileSubmit.FolderUrl = this.ServerInfo.SharePointSiteUrl.ToString() + "Doclib/";

fileSubmit.Execute();

// If the submit operation is successful, set


e.CancelableArgs.Cancel = false;

}
  OK,代码就是这么简单,但是可以解决大问题,借用句让子弹飞中的台词,希望这篇文章可以帮助大家在使用InfoPath时能够走的更加悠然~~~。
页: [1]
查看完整版本: [SharePoint 2010 的那些事儿 – InfoPath]在数据连接中使用相对URL