ASP.NET AJAX подавляет предварительную загрузку AJAX-запросов от панели обновления - PullRequest
1 голос
/ 16 июля 2009

Я перехватываю событие window.onbeforeunload на странице aspx. Мне нужно, чтобы не запускалось, если я размещаю страницу GridView, которая находится в UpdatePanel на той же странице.

Я попытался перехватить событие initializeRequest PageRequestManager, но это происходит слишком поздно, то есть после onbeforeunload. Я также попытался проверить PageRequestManager.get_isInAsyncPostBack () в моем обработчике onbeforeunload, но он также возвращает false, gah!

Я читал эту ТАКУЮ ветку:

537702

Но это не имеет смысла для меня, кроме того, что ссылки на страницы GridView вызывают выгрузку, тогда как кнопки в столбце GridView - нет? Кто-нибудь знает, как это решить? Я предполагаю, что единственный способ - это прикрепить обработчик кликов на стороне клиента ко всем якорям страницы GridView, чтобы установить некоторый логический флаг, но я не уверен, как это сделать надежным способом.

1 Ответ

2 голосов
/ 16 июля 2009

Хорошо, JQuery на помощь!

<script type="text/javascript">
    var flag = true;
    window.onbeforeunload = beforeUnloading;
    var prm = Sys.WebForms.PageRequestManager.getInstance();
    prm.add_pageLoaded(initPagers);

    function initPagers() {
        $(".gridViewPagerStyle").click(function() { flag = false; });
    }

    function beforeUnloading(){
        if(flag)
            return "unloading";

        flag = true;
    }
</script>

:
:   

<asp:GridView ... PagerStyle-CssClass="gridViewPagerStyle" ... />

:
:

Установите класс Css для всех ссылок на пейджеры, используйте его для добавления обработчиков щелчков JavaScript, которые устанавливают флаг при нажатии, используйте флаг, чтобы избежать onbeforeunload

...