2013-02-07 29 views
1

在子弹出窗口中,我有以下按钮。Javascript:将aspx父页强制为服务器刷新

<asp:Button Style="width: 100%;" ID="Button2" runat="server" OnClientClick="RefreshParent()" 
OnClick="Button1_Click" Text="Select Study" /> 

的onclick功能允许用户选择了一项研究,改变了整个网站的内容,这部分工作正常,因此未列出。

OnClientClick函数应刷新父页面,但不会导致客户端数据更新,除非手动刷新页面(F5)。这是RefreshParent代码。

<script type="text/javascript"> 
    function RefreshParent() { 
     window.opener.document.reload() 
     window.close(); 
    } 
</script> 

在功能我也尝试:

window.opener.document.reload(true) 

window.opener.document.href("home.aspx") 

毫无效果。有没有一种方法会导致服务器从后台或JavaScript代码的子窗口回发?谢谢。

+0

你试过'__doPostBack()'吗?请参阅:http://stackoverflow.com/questions/1305954/asp-net-postback-with-javascript – David

回答

1

你尝试过:

<script type="text/javascript"> 
    function RefreshParent() { 
     window.opener.location.reload(); 
     window.close(); 
    } 
</script> 

你可能也想在的OnClientClick(不是一个真正的事,你正在关闭窗口)返回false

+0

Ack!我很抱歉,我打算在所有这些中输入位置。 window.opener.document.reload()甚至不起作用。我想我在输入这个问题时进入了自动驾驶。所以是的,你的问题的答案是肯定的,我已经尝试过了。 –

0

我认为正在发生的事情是,你的重装父页面在您的弹出窗口OnClick方法执行之前完成。为了有后回完成后您的重装脚本执行,我建议你换你的脚本,其中回发后显示的占位符:

<asp:placeholder id="refresh_script" visible="false" runat="server"> 
    <script type="text/javascript"> 
    window.opener.location.reload(); 
    window.close(); 
    </script> 
</asp:placeholder> 

在你的onclick处理程序:

refresh_script.Visible = true; 

删除您的按钮上的OnClientClick处理程序。