سؤال

هل هناك طريقة لتنفيذ البرنامج النصي عندما يتم الانتهاء من عملية UpdatePanel.

ولدي صفحة تسمح "ادخال"، "النسخ" و "التحرير" من سجل. ويتم كل ذلك على UpdatePanel لمنع الملاحة الصفحة. في مكان آخر على الصفحة وأود أن طباعة رسالة "فلاش" - مثل "لقد دخلت بنجاح رقما قياسيا." أنها ليست بالقرب من UpdatePanel وأود أن استخدام تأثير مسج على الرسالة لذلك يتلاشى بعد 4 ثوان. كيف يمكنني إرسال السيناريو مرة أخرى مع UpdatePanel أو أنها تنفيذ بعد تحديث وUpdatePanel؟ يجب أن كتابة السيناريو لآسيا والمحيط الهادئ: الحرفي؟ الأفكار؟

هل كانت مفيدة؟

المحلول

ونعم:

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

وبعد ذلك:

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

هنا و <لأ href = "HTTP: // msdn.microsoft.com/en-us/library/bb397499.aspx "يختلط =" noreferrer "> هنا . نضع في اعتبارنا أن هذا سوف النار على كل طلب 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> 

وهنا مقالة عن كيفية القيام بذلك باستخدام طريقة 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 () يعمل كبيرة بالنسبة لي كذلك.

وأعمل مع الكثير من الصفحات التي تحتوي على Updatepanels متعددة، ولقد علمت أن هذا سوف النار تلقائيا حتى لو كان Updatepanel كنت لا تريد ذلك لينعش. حتى داخل الدالة التي تطلق على الحدث تأكد أن لديك شيء من هذا القبيل:

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

وبرونو،

أولا، للإجابة على السؤال المباشر. في رد الاتصال التي يتم استدعاء من قبل لجنة التحديث، يجب أن تكون قادرا على استخدام مكالمة RegisterStartupScript استدعاء الأسلوب JS. ثم في طريقة JS الخاص بك، فإنك سوف تظهر الرسالة ثم يمكنك استخدام القيام:

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

ولأنها قد تتلاشى بعد 4 ثوان.

ليخطو خطوة إضافية، منذ كنت بالفعل تنفيذ جافا سكريبت، وأود أن أدعوكم للتحقق من <لأ href = "http://encosia.com/2007/07/11/why-aspnet-ajax-updatepanels -هل-خطير / "يختلط =" نوفولو noreferrer "> هذه المقالة حول UpdatePanels . إذا كان ذلك ممكنا، وأود أن محاولة إرسال اياكس يدعو إلى تتبعونها ادخال والنسخ والتحرير وهذا من شأنه أن زيادة تبسيط ردود الفعل المستخدم ومن شأنه أن يمنع من المعلومات الزائدة عبر السلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top