我正在使用支持浏览器的Infopath表格和Sharepoint 2010,我希望在点击提交后显示模态弹出窗口甚至重定向到另一个页面,说“谢谢...你的表单已发送... ”
我无法使用View(并在提交时更改为该视图),因为该表单位于页面中的“标签”内。我的意思是,该页面包含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());
}
}
当我点击提交时,没有任何反应。没有页面重定向,没有视图切换,没有数据提交。 有任何想法吗? 谢谢!
答案 0 :(得分:0)
Popup不支持使用浏览器的表单,您唯一的可能是自定义代码。在您的提交代码中,您可以重定向到静态感谢页面。
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一起使用,并且您永远不会掌握实际的异常。我担心没有错误的消息,很难再解决你的问题。
答案 1 :(得分:0)
另一种重定向方式是使用查询字符串的“Source”参数。但是,只能将重定向到与表单相同的网站集中的页面。 E.g。
http://[site]/_layouts/FormServer.aspx?XsnLocation=/sites/[site]/formservertemplates/[form].xsn<b>&Source=/sites/[site]/pages/[page]</b>
如果ThankYou.aspx在当前网站集合之外,您可以重定向到重定向到ThankYou.aspx的中间页面。我听说没有别的方法可以绕过这个。