将启用浏览器的InfoPath表单重定向到自定义URL

时间:2012-12-11 11:52:17

标签: c# sharepoint sharepoint-2010 infopath infopath2010

在我的InfoPath表单中,我有一个按钮,我想在点击时重定向到自定义URL。 我尝试过Response.RedirectServer.TransferSPUtilities.Redirect,但都没有。

当我尝试

HttpContext.Response.Redirect("http://google.com", false);

我的表单显示错误消息:严重错误...

1 个答案:

答案 0 :(得分:0)

发布InfoPath Forms Services时无法重定向,但可以在自己的XmlFormView webpart上托管启用浏览器的InfoPath表单,然后通知主机重定向。

这是我的解决方案:

您可以使用XmlForm类的NotifyHost方法将通知发送到表单模板的托管环境。
将以下代码添加到Button控件的Clicked事件处理程序中:

NotifyHost("Redirect")

NotifyHost 方法会引发 XmlFormView 控件的 NotifyHost 事件。
创建VisualWebPart项目并将 XmlFormView 控件添加到VisualWebPart,您必须添加

OnNotifyHost="XmlFormView1_NotifyHost"

XsnLocation="http://ServerName/FormServerTemplates/MyFormTemplate.xsn"

到XmlFormView1的控件标记。以下代码显示了如何执行此操作:

<cc1:XmlFormView ID="XmlFormView1" runat="server" XsnLocation="http://ServerName/FormServerTemplates/MyFormTemplate.xsn" OnNotifyHost="XmlFormView1_NotifyHost" />

在挂接事件之后,必须在VisualWebPart的代码隐藏中实现XmlFormView1_NotifyHost事件处理程序,如下所示:

protected void XmlFormView1_NotifyHost(object sender, NotifyHostEventArgs e)
{
    ...
}

将NotifyHost事件连接到事件处理程序后,您可以在事件处理程序中编写代码来注册和执行JScr​​ipt代码。

protected void XmlFormView1_NotifyHost(object sender, NotifyHostEventArgs e)
{
    if (e.Notification == "Redirect")
    {
        string jsCode = "window.location='http://www.google.com';";
        Page.ClientScript.RegisterStartupScript(typeof(string), "RedirectScript", jsCode, true);
    }
}