使用FormServies打开Infopath文件(修改Task画面的指向Item的链接)
问题:
在Infopath上开始WorkFlow后,承认时指向Infopath Item的链接只能在Infopath客户端打开,
不能以网页的形式访问。
分析:
Link地址不正确。
解决方案:
构造一个使用FormServer.aspx打开的地址。
修改“_layouts/WrkTaskIP.aspx”页面。
关键函数:
作用:构造一个使用FormServer.aspx打开的地址<script runat="server">
位置:嵌入到“_layouts/WrkTaskIP.aspx”页面。
引用: <% SPHttpUtility.NoEncode(GetFormServicesUrl(),Response.Output); %>
public string GetFormServicesUrl()
{
Guid workflowInstanceId = new Guid((string)this.m_task[SPBuiltInFieldId.WorkflowInstanceID]);
Microsoft.SharePoint.Workflow.SPWorkflow workflow =new Microsoft.SharePoint.Workflow.SPWorkflow(base.Web, workflowInstanceId);;
string strFormServerUrl = workflow.ParentWeb.Site.
MakeFullUrl("_layouts/FormServer.aspx");
System.Text.StringBuilder objItemFullUrl = new System.Text.StringBuilder(strFormServerUrl);
objItemFullUrl.Append("?");
objItemFullUrl.Append("XmlLocation=");
objItemFullUrl.Append(SPEncode.UrlEncode(workflow.ParentWeb.ServerRelativeUrl));
objItemFullUrl.Append(SPEncode.UrlEncode("/"));
objItemFullUrl.Append(SPEncode.UrlEncode(workflow.ParentItem.Url));
objItemFullUrl.Append("&");
objItemFullUrl.Append("Source=");
objItemFullUrl.Append(SPEncode.UrlEncode(workflow.ParentWeb.Site.MakeFullUrl(
workflow.TaskList.DefaultViewUrl)));
objItemFullUrl.Append("&DefaultItemOpen=1");
string strUrl = "<a href=\"" + objItemFullUrl + "\">Open Item User Form Services</a>";
return strUrl;
}
</script>
源文件: