ASP.NET - UpdatePanel и JavaScript

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
25
0
37 933
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Ответ принят как подходящий

Да:

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> 

Спасибо. Я использовал его, чтобы добавить спиннер.

Bryan Legend 13.02.2011 04:51

Бруно,

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

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

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

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

Я не верю, что вызовы RegisterStartupScript могут внедрить JS в обратный вызов AJAX.

Robert C. Barth 07.01.2009 00:06

Я ухожу от UpdatePanels и перехожу к WCF / AJAX через MS AJAX и jQuery. Это просто старые проекты, которые работают, но я подумал, что добавлю несколько UpdatePanel, чтобы сделать их более привлекательными.

BuddyJoe 07.01.2009 00:08

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

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

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