ASP.NET - панель обновления и JavaScript - PullRequest
25 голосов
/ 06 января 2009

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

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

Ответы [ 6 ]

31 голосов
/ 06 января 2009

Да

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

А потом:

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

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

26 голосов
/ 06 января 2009

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

       <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 голосов
/ 12 ноября 2009

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

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

3 голосов
/ 06 июня 2015

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

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

function BeginRequestHandler(sender, args) {
if (args.get_postBackElement().id == "ID of the Updatepanel") {
// do stuff here
3 голосов
/ 23 июня 2011
var requestManager = Sys.WebForms.PageRequestManager.getInstance();
requestManager.add_beginRequest(function () { alert('here1') });
requestManager.add_endRequest(function () { alert(here2') });

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

2 голосов
/ 07 января 2009

Бруно,

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

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

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

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

...