Вопрос

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

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

Это было полезно?

Решение

Да:

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

А потом:

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

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

Другие советы

Это должно сработать:

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

Вот статья о том, как это сделать, используя статический метод ScriptManager RegisterClientScriptBlock. Пробовал и работает как шарм.

http://csharperimage.jeremylikness.com /2009/06/inject-dynamic-javascript-into-aspnet.html

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

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

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

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

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

Бруно,

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top