2009-11-12 3 views
0

У меня есть простой javascript, который я бы хотел запустить при нажатии кнопки, но я также хочу, чтобы на сервере появлялось несколько обратных действий. Логический код для этого выглядит следующим образом:Обратный порядок операций для OnClick и OnClientClick?

<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?

Жаль, что приведенный выше код не работает, поскольку он изящно прост и прост.

ответ

0

Вы должны сделать обратную передачу перед закрытием окна. Также вы хотите сделать postback перед обновлением родительского окна, так как я предполагаю, что причина обновления окна - отобразить информацию, которую вы собираетесь сохранить.

Используйте RegisterStartupScript в ClientScript объекта для запуска кода после постбэка:

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

Однако, если родительская страница является результатом постбэка, это вызовет диалоговое окно в браузере, информирующее пользователя что для повторной загрузки страницы необходим почтовый запрос. Чтобы этого избежать, вам нужно будет сделать что-то вроде вызова функции на родительской странице, которая могла бы сделать обратную передачу для обновления страницы.

+0

Закончено делать именно это. Добавлена ​​функция обновления JS на родительской странице с помощью GetPostBackBackEventReference на скрытой кнопке. – Bryan

Смежные вопросы