0

我在 Sharepoint 2010 中使用支持浏览器的 Infopath 表单,我想在单击提交后显示模式弹出窗口甚至重定向到另一个页面,并说“谢谢……您的表单已发送……”。

我不能使用视图(并在提交时更改为该视图),因为表单位于页面的“选项卡”内。我的意思是,该页面包含 5 个可通过 5 个按钮访问的 DIV。默认打开的DIV是第一个。表格在第 5 个 DIV 内。提交操作(回发)后,页面重新加载并显示第一个 DIV,因此用户看不到带有“谢谢...”的视图

关于如何解决这个问题的任何想法?提前致谢!

编辑 2

我尝试了 Andreas 的解决方案,但没有奏效。这是我的“提交”按钮代码。

    public void CTRL114_5_Clicked(object sender, ClickedEventArgs e)
            {

             try
             {
                SPSecurity.RunWithElevatedPrivileges(delegate()
                {
                    this.Submit();                             
                    HttpContext.Current.Response.Redirect("ThankYou.aspx");
                });
             } catch (Exception ex)
             {
                  System.Console.Write(ex.toString());
             }

            }

当我单击提交时,没有任何反应。无页面重定向,无视图切换,无数据提交。有任何想法吗?谢谢!

4

2 回答 2

0

弹出窗口不适用于启用浏览器的表单,您唯一的可能是自定义代码。在您的提交代码中,您可以重定向到静态感谢页面。

HttpContext.Current.Response.Redirect("ThankYou.aspx");

编辑:在您的 VSTA 编辑器中,确保您引用了 System.Web。如果没有实际的例外,很难说什么不起作用。请尝试以下代码并发布输出 -

try
{
     SPSecurity.RunWithElevatedPrivileges(delegate()
     {
           this.Submit();
           HttpContext.Current.Response.Redirect("ThankYou.aspx");
     });
}
catch(Exception ex)
{
     //implement your logging logic here
}

编辑2:您可以在预览模式下打开表单并调试代码吗?还可以考虑将您的日志记录代码更改为以下内容:

catch(Exception ex)
{
     using(var writer = new StreamWriter(@"C:\log.txt",true))
        writer.WriteLine("{0}\t{1}", DateTime.Now, ex.Message);
}

因为 Console.WriteLine 不适用于 InfoPath,并且您永远无法掌握实际的异常。恐怕如果没有错误消息,将很难进一步解决您的问题。

于 2011-08-19T15:37:19.967 回答
0

另一种重定向方式是使用查询字符串的“源”参数。但是,只能重定向到与表单相同的网站集中的页面。例如

http://[site]/_layouts/FormServer.aspx?XsnLocation=/sites/[site]/formservertemplates/[form].xsn<b>&Source=/sites/[site]/pages/[page]</b>

如果ThankYou.aspx 在当前站点集合之外,您可以重定向到重定向到ThankYou.aspx 的中间页面。我听说没有其他方法可以绕过这个。

于 2011-08-29T09:55:46.767 回答