يشير AJAX إلى JavaScript وXML غير المتزامنين. هذه تقنية متعددة المنصات تعمل على تسريع أوقات الاستجابة. تضيف عناصر تحكم خادم AJAX برنامجًا نصيًا إلى الصفحة، والذي يتم تنفيذه ومعالجته بواسطة المتصفح.
ومع ذلك، مثل عناصر تحكم خادم ASP.NET الأخرى، يمكن أن تحتوي عناصر تحكم خادم AJAX هذه على أساليب ومعالجات أحداث مرتبطة بها، والتي يتم التعامل معها جميعًا من جانب الخادم.
يحتوي صندوق أدوات التحكم في Visual Studio IDE على مجموعة من مكونات التحكم تسمى "AJAX".
يعد عنصر التحكم ScriptManager هو عنصر التحكم الأكثر أهمية ويجب أن يكون موجودًا على الصفحة حتى تعمل عناصر التحكم الأخرى.
لديها بناء الجملة الأساسي:
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
إذا قمت بإنشاء "موقع Ajax Enabled" أو أضفت "AJAX Web Form" من مربع الحوار "Add Item"، فسوف تتشكل صفحة الويب تلقائيًا وتحتوي على عنصر تحكم مدير البرنامج النصي. يعتني عنصر التحكم ScriptManager بالبرمجة النصية من جانب العميل لكافة عناصر التحكم من جانب الخادم.
عنصر التحكم UpdatePanel هو عنصر تحكم حاوية وهو مشتق من فئة التحكم. إنه يعمل كحاوية لعناصر التحكم التابعة بداخله وليس له واجهة خاصة به. عندما يقوم أحد عناصر التحكم الخاصة به بتشغيل عملية إرسال مرة أخرى، تتدخل UpdatePanel للبدء بشكل غير متزامن وتحديث جزء من الصفحة.
على سبيل المثال، إذا كان أحد أزرار التحكم موجودًا داخل لوحة التحديث، وتم النقر عليه، فلن تتأثر سوى عناصر التحكم الموجودة في لوحة التحديث، ولن تتأثر عناصر التحكم الموجودة في الأجزاء الأخرى من الصفحة. وهذا ما يسمى عودة الالتزام الجزئي أو عودة الالتزام غير المتزامنة.
أضف نموذج ويب AJAX إلى تطبيقك. أنه يحتوي على عنصر تحكم مدير البرنامج النصي الافتراضي. أدخل لوحة التحديث. ضع زر التحكم وملصق التسمية داخل لوحة التحكم في التحديث. ضع مجموعة أخرى من الأزرار والتسميات خارج اللوحة.
تبدو طريقة عرض التصميم كما يلي:
يبدو ملف الموارد كما يلي:
<form id = "form1" runat = "server"> <div> <asp:ScriptManager ID = "ScriptManager1" runat = "server" /> </div> <asp:UpdatePanel ID = "UpdatePanel1" runat = "server" > <ContentTemplate> <asp:Button ID="btnpartial" runat="server" onclick="btnpartial_Click" Text="Partial PostBack"/> <br /> <br /> <asp:Label ID="lblpartial" runat="server"></asp:Label> </ContentTemplate> </asp:UpdatePanel> <p> </p> <p>خارج لوحة التحديث</p> < p> <asp:Button ID = "btntotal" runat = "server" onclick = "btntotal_Click" Text = "إجمالي PostBack" /> </p> <asp:Label ID = "lbltotal" runat="server"></asp:Label></form>
تحتوي جميع عناصر التحكم في الأزرار على نفس الرمز لمعالج الوقت:
string time = DateTime.Now.ToLongTimeString();lblpartial.Text = "إظهار الوقت من اللوحة" + time;lbltotal.Text = "إظهار الوقت من الخارج" + الوقت;
لاحظ أنه عند تنفيذ الصفحة، إذا تم النقر على زر إرجاع الإرسال الإجمالي، فسيتم تحديث جميع العلامات بوقت التحديث، ولكن إذا تم النقر على زر إرجاع الإرسال الجزئي، فسيقوم فقط بتحديث العلامات في لوحة التحديث.
ملكية | يصف |
---|---|
ChildrenAsTriggers | تشير هذه الخاصية إلى ما إذا كان الإرجاع يأتي من عنصر تحكم تابع، مما سيؤدي إلى تحديث لوحة التحديث. |
قالب المحتوى | إنه قالب المحتوى ويحدد ما يظهر داخل لوحة التحديث عند ظهوره. |
ContentTemplateContainer | يسترد كائن حاوية قالب تم إنشاؤه ديناميكيًا ويستخدم لإضافة عناصر تحكم فرعية برمجيًا. |
IsInPartialRendering | يشير إلى ما إذا كان قد تم تحديث اللوحة كجزء من إرجاع الالتزام الجزئي. |
وضع العرض | إظهار وضع التجسيد. الأوضاع المتاحة هي Block وInline. |
UpdateMode | الحصول على وضع العرض أو تعيينه عن طريق تحديد بعض الشروط. |
المشغلات | حدد كائنات تشغيل المجموعة، كل منها يتوافق مع حدث يؤدي إلى تحديث اللوحة تلقائيًا. |
ويوضح الجدول التالي طرق التحكم في لوحة التحديث:
طريقة | يصف |
---|---|
CreateContentTemplateContainer | يتم إنشاء كائن التحكم ليكون بمثابة حاوية لعناصر التحكم التابعة التي تحدد محتويات عنصر التحكم UpdatePanel. |
إنشاء مجموعة التحكم | إرجاع مجموعة من كافة عناصر التحكم الموجودة في عنصر التحكم UpdatePanel |
تهيئة | تهيئة مجموعة مشغلات التحكم UpdatePanel في حالة تشغيل رسم جزئي للصفحة. |
تحديث | يؤدي إلى تحديث محتوى عنصر تحكم UpdatePanel. |
يعتمد سلوك لوحة التحديث على قيم خاصية UpdateMode وخاصية ChildrenAsTriggers.
طريقة | يصف | تأثير |
---|---|---|
دائماً | خطأ شنيع | معلمة غير قانونية |
دائماً | حقيقي | يتم تحديث UpdatePanel في حالة تحديث الصفحة بأكملها أو عودة عنصر تحكم فرعي فوقها. |
شرطي | خطأ شنيع | يتم تحديث UpdatePanel إذا تم تحديث الصفحة بأكملها أو إذا بدأ عنصر تحكم تم تشغيله خارجها في التحديث. |
شرطي | حقيقي | يتم تحديث UpdatePanel إذا تم تحديث الصفحة بأكملها أو إذا عاد عنصر تحكم فرعي فوقها أو بدأ عنصر تحكم مشغل خارجها في التحديث. |
يوفر عنصر التحكم UpdateProgress تعليقات من المستعرض عند تحديث واحد أو أكثر من عناصر التحكم في لوحة التحديث. على سبيل المثال، انتظار استجابة من الخادم عندما يقوم المستخدم بتسجيل الدخول أو عند تنفيذ بعض الأعمال الموجهة لقاعدة البيانات.
فهو يوفر تأكيدًا مرئيًا مثل "جارٍ تحميل الصفحة..." بأن العمل قيد المعالجة.
بناء جملة عنصر التحكم UpdateProgress هو:
<asp:UpdateProgress ID="UpdateProgress1" runat="server" DynamicLayout="true" AssociatedUpdatePanelID="UpdatePanel1" > <ProgressTemplate> جارٍ التحميل... </ProgressTemplate></asp:UpdateProgress>
يعرض المقتطف أعلاه رسالة بسيطة تحتوي على علامة ProgressTemplate. ومع ذلك، يمكن أن تكون صورة أو عنصر تحكم آخر ذي صلة. يعرض عنصر التحكم UpdateProgress كل إرجاع غير متزامن ما لم يتم تحديده كلوحة تحديث منفصلة باستخدام خاصية AssociatedUpdatePanelID.
يوضح الجدول التالي خصائص التحكم في تقدم التحديث.
ملكية | يصف |
---|---|
AssociatedUpdatePanelID | الحصول على معرف لوحة التحديث وتعيينه باستخدام عنصر التحكم الذي يرتبط به عنصر التحكم هذا. |
صفات | الحصول على خاصية ورقة الأنماط المتتالية (CSS) لعنصر التحكم UpdateProgress وتعيينها. |
عرض بعد | الحصول على الوقت وتعيينه بالمللي ثانية بعد عرض قالب المعالجة. الافتراضي هو 500. |
تخطيط ديناميكي | يشير إلى ما إذا كان سيتم عرض قوالب العملية ديناميكيًا. |
ProgressTemplate | يشير إلى أن القالب يتم عرضه أثناء إرجاع الالتزام غير المتزامن الذي يستغرق وقتًا أطول من وقت DisplayAfter. |
ويبين الجدول التالي طرق التحكم في تقدم التحديث:
طريقة | يصف |
---|---|
GetScriptDescriptors | تقوم بإرجاع قائمة بالمكونات والسلوكيات وعناصر التحكم من جانب العميل المطلوبة للوظيفة من جانب العميل لعنصر التحكم UpdateProgress. |
مراجع GetScript | إرجاع قائمة بعناصر تحكم UpdateProgress التي تعتمد عليها البرامج النصية للعميل. |
يتم استخدام عنصر التحكم بالمؤقت لتهيئة مرتجعات الإرسال تلقائيًا. ويمكن القيام بذلك بطريقتين:
(1) قم بتعيين خاصية المشغلات لعنصر تحكم UpdatePanel.
<المشغلات> <asp:AsyncPostBackTrigger ControlID = "btnpanel2" EventName = "انقر" /></Triggers>
(2) ضع عنصر تحكم المؤقت مباشرة داخل UpdatePanel كمشغل لعنصر التحكم الفرعي. يمكن أن يعمل مؤقت واحد كمشغل للعديد من لوحات التحديث.
<asp:UpdatePanel ID = "UpdatePanel1" runat = "server" UpdateMode = "Always"> <ContentTemplate> <asp:Timer ID = "Timer1" runat = "server" Interval = "1000"> </asp: Timer> < asp:Label ID = "Label1" runat = "server" Height = "101px"> </asp:Label> </ContentTemplate></asp:UpdatePanel>