2013-02-07 64 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處理程序。