使用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>

源文件:

WrkTaskIP.rar

posted @ 2010-01-07 11:01  玛雅人  阅读(488)  评论(0编辑  收藏  举报