Подтвердить что ты не робот

ASP.NET - UpdatePanel и JavaScript

Есть ли способ выполнить script, когда процесс UpdatePanel завершен.

У меня есть страница, которая позволяет "вставлять", "копировать" и "редактировать" записи. Все это делается на UpdatePanel, чтобы предотвратить навигацию по страницам. Где-то еще на странице я хотел бы напечатать сообщение "flash" - например "Вы успешно вошли в запись". Он не находится рядом с UpdatePanel, и я хотел бы использовать эффект jQuery для сообщения, чтобы он исчезал через 4 секунды. Как я могу отправить script обратно с помощью UpdatePanel или выполнить его после обновления UpdatePanel? Должен ли я писать script в asp: literal? мысли?

4b9b3361

Ответ 1

Да:

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler);

И затем:

function endRequestHandler(sender, args)
{
  // Do stuff
}

Документация здесь и здесь. Имейте в виду, что это будет срабатывать для каждого запроса AJAX на странице.

Ответ 2

Это должно сделать трюк:

       <script type="text/javascript">
            var prm = Sys.WebForms.PageRequestManager.getInstance();
            prm.add_beginRequest(BeginRequestHandler);
            prm.add_endRequest(EndRequestHandler);

            function BeginRequestHandler(sender, args) 
            {
                 //Jquery Call
            }

            function EndRequestHandler(sender, args) 
            {
                 //Jquery Call

            }
        </script> 

Ответ 4

var requestManager = Sys.WebForms.PageRequestManager.getInstance();
requestManager.add_beginRequest(function () { alert('here1') });
requestManager.add_endRequest(function () { alert(here2') });

Источник: http://www.howtositecore.com/?p=36

Ответ 5

Метод Sys.WebForms.PageRequestManager.getInstance() отлично работает и для меня.

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

function BeginRequestHandler(sender, args) {
if (args.get_postBackElement().id == "ID of the Updatepanel") {
// do stuff here

Ответ 6

Бруно,

Во-первых, чтобы ответить на ваш прямой вопрос. В обратном вызове, который вызывается панелью обновления, вы должны использовать вызов RegisterStartupScript для вызова метода JS. Затем в вашем методе JS вы увидите сообщение, а затем вы можете использовать do:

setTimeout('$('#myMessage').fadeOut("slow")', 4000);

чтобы оно исчезло через 4 секунды.

Чтобы сделать еще один шаг вперед, так как вы уже используете JavaScript, я приглашаю вас проверить эту статью о UpdatePanels. Если возможно, я попытаюсь отправить вызовы Ajax, чтобы выполнить вставку, копирование и редактирование, и это еще больше упростит вашу обратную связь с пользователем и предотвратит избыточную информацию по проводке.