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





Это должно помочь:
<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>
Бруно,
Во-первых, чтобы ответить на ваш прямой вопрос. В вашем обратном вызове, который вызывается панелью обновления, вы должны иметь возможность использовать вызов RegisterStartupScript для вызова метода JS. Затем в своем методе JS вы должны показать сообщение, а затем вы можете использовать команду do:
setTimeout('$('#myMessage').fadeOut("slow")', 4000);
чтобы он исчез через 4 секунды.
Чтобы сделать еще один шаг, поскольку вы уже реализуете JavaScript, я предлагаю вам проверить эта статья об UpdatePanels. Если возможно, я бы попытался отправить вызовы Ajax для вставки, копирования и редактирования, и это еще больше упростило бы обратную связь с пользователем и предотвратило бы передачу избыточной информации по сети.
Я не верю, что вызовы RegisterStartupScript могут внедрить JS в обратный вызов AJAX.
Я ухожу от UpdatePanels и перехожу к WCF / AJAX через MS AJAX и jQuery. Это просто старые проекты, которые работают, но я подумал, что добавлю несколько UpdatePanel, чтобы сделать их более привлекательными.
Вот статья о том, как это сделать с помощью статического метода 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
Спасибо. Я использовал его, чтобы добавить спиннер.