يوجد عنصر تحكم UpdatePanel في الأطلس، والذي يدعم التحديثات الجزئية، ما عليك سوى تحديد Mode = "Conditional". بالطبع، يجب على ScriptManager أيضًا تعيين EnablePartialRendering = "true".
التحديث الجزئي باستخدام xmlHttp. العملية هي كما يلي:
1: أثناء إعادة النشر، يقوم js الخاص بالصفحة بإعادة نشر البيانات الموجودة على الصفحة (يجب إعادة نشر الصفحة بأكملها)
2: تتلقى الخلفية الطلب وتبدأ في المعالجة (يمكن تشغيل تحميل الصفحة للصفحة)
3: بعد المعالجة، قم فقط بإرسال البيانات المراد تحديثها مرة أخرى إلى الصفحة (حدد أي جزء من البيانات تريد إرساله مرة أخرى وفقًا لاسم UpdatePanel الذي تريد تحديثه. هذا هو رمز this.updatePanelXX.Update()) )
4: تقوم الصفحة (العميل) بتحديث هذا الجزء من بيانات إعادة النشر فقط (هذا هو ما يسمى بالتحديث الجزئي، والطريقة هي العثور على updatePanle، ثم UpdatePanel.InnerHtml=PostBackData. إنه بديل مباشر.)
من هذا وجهة نظر، ما يسمى بالتحديث الجزئي الجديد هو إعادة رسم جزء UpdatePanel المحدد فقط (عند النشر مرة أخرى إلى الخادم، يجب إعادة نشر الصفحة بأكملها مرة أخرى؛ وسيقوم رمز الخلفية بمعالجة كل جزء كما كان من قبل؛ ولكن جزء فقط سيتم إرجاع نتائج المعالجة إلى العميل).
بهذه الطريقة، سيكون الأمر صعبًا للغاية إذا كنت تريد تشغيل معالجة js للصفحة أثناء معالجة UpdatePanle. نظرًا لأن جميع البيانات التي تعيد نشرها يتم تحديثها في زاوية صغيرة، فلن يعمل Response.Write(js) السابق على الإطلاق.
الحل هو هذا:
this.Page.ClientScript.RegisterStartupScript(this.GetType(), "OpenOverViewPart, openScript); استخدم طريقة RegisterStartupScript لتسجيل وظيفة js، ومن ثم يمكن تنفيذها بسلاسة.
في الواقع، التنفيذ ليس سلسًا جدًا، لأنه بعد أن يقوم atlas بالتحديث الجزئي، فإنه سيجمع كل ملفات js الموجودة على الصفحة معًا --- اهتم بشؤونك الخاصة --- لذلك سوف يسبب بعض التأثير البسيط: العديد من js لديها مثل <! - ورموز التعليق الأخرى، إذا لم تكن حذرًا، فسيتم أيضًا التعليق على js الخاص بك. وهذا في الواقع أكثر إزعاجا.
الحل هو X. تحتاج إلى التحكم في نمط إخراج js بنفسك وإضافة عدد قليل من أحرف الإرجاع لإظهار أنه ليس تعليقًا.
سلسلة openScript = "nt";
openScript = "<script" + " type='text/javascript'>rn"
+ "rn"
+ "فار أ=0;rn"
+ "opener.top.__doPostBack('" + Request.Params["refresh"] + "','refresh');rn"
+ "window.opener.focus();"
+ "نافذة.إغلاق ()؛"
+ "<" + "/script" + ">";