簡體   English   中英

OnClick和OnClientClick的操作順序相反嗎?

[英]Reverse order of operations for OnClick and OnClientClick?

我有一些想在單擊按鈕時運行的簡單javascript,但是我還希望在服務器上進行一些回發操作。 邏輯代碼如下所示:

<asp:Button ID="btnOK" runat="server" Text="Save Changes" OnClientClick="UpdateParent();" OnClick="btnOK_Click" />
<asp:Button ID="btnCancel" runat="server" Text="Cancel" OnClientClick="window.close();" />

<script language="javascript" type="text/javascript">
    function UpdateParent()
    {
    window.opener.document.location.reload(true); // or should we postback instead?
    window.close();     
    }
</script>

基本上,彈出窗口應刷新其父窗口,然后關閉自身。 但是...如果我調用window.close(),則不會發生回發並且不會調用按鈕處理程序。 但是很明顯,OnClientClick是在回發發生之前調用的。 我是否必須在按鈕處理程序中發出此javascript並在回發后頁面加載時運行它? 如果是這樣的話,如今對於ASP.NET 2.0 正確的做法是什么?

令人遺憾的是,上面的代碼非常簡潔明了,因此無法正常工作。

您必須在關閉窗口之前進行回發。 另外,您還想在刷新父窗口之前進行回發,因為我猜想刷新窗口的原因是要顯示要保存的信息。

使用ClientScript對象中的RegisterStartupScript在回發后運行代碼:

Page.ClientScript.RegisterStartupScript(this.GetType(), "close", "window.opener.location.reload(true);window.close();", true);

但是,如果父頁面是回發的結果,則將導致瀏覽器中的對話框窗口通知用戶需要發帖請求才能重新加載頁面。 為了避免這種情況,您必須執行一些操作,例如在父頁面中調用一個函數,該函數可以執行回發以更新頁面。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM