يقدم لك هذا القسم كيفية التعامل مع أحداث ASP.NET.
الحدث هو إجراء أو حدث، مثل النقر بالماوس، أو الضغط على المفتاح، أو حركة الماوس، أو أي إشعار يصدره النظام. عملية تتواصل من خلال الأحداث. على سبيل المثال، المقاطعات هي أحداث ينشئها النظام. عند وقوع الأحداث، يمكن للتطبيقات الاستجابة لها وإدارتها.
يتم رفع الأحداث الموجودة على ASP.NET على جهاز المستخدم ومعالجتها على الخادم. على سبيل المثال، يقوم المستخدم بالنقر فوق زر معروض في المتصفح. يتم رفع حدث النقر. يتعامل المتصفح مع هذا الحدث من جانب العميل عن طريق إرساله إلى الخادم.
يحتوي الخادم على روتين فرعي يصف ما يجب فعله عند رفع حدث ما؛ وهذا ما يسمى معالج الحدث. ولذلك، عندما يتم تمرير معلومات الحدث إلى الخادم، فإنه يتحقق مما إذا كان حدث النقر مرتبطًا بمعالج الحدث. إذا كان ذلك مناسبًا، سيتم تنفيذ معالج الحدث.
عادةً ما تأخذ معالجات أحداث ASP.NET معلمتين وترجع قيمة فارغة. تمثل المعلمة الأولى الكائن الذي يطلق الحدث، والمعلمة الثانية هي معلمة الحدث.
بناء الجملة العام للحدث هو:
private void EventName (object sender, EventArgs e);
أهم أحداث التطبيق هي:
Application_Start - يتم رفعه عند تشغيل تطبيق أو صفحة ويب.
Application_End - يتم رفعه عند إيقاف تطبيق أو صفحة ويب.
وبالمثل، فإن أحداث الجلسة الأكثر استخدامًا هي:
Session_Start - يتم إطلاقه عندما يطلب المستخدم في البداية صفحة من التطبيق.
Session_End – يتم رفعه عند انتهاء الجلسة.
أحداث الصفحة والتحكم الشائعة هي:
DataBinding – يتم رفعه عندما يرتبط عنصر التحكم بمصدر بيانات.
تم التخلص منه – يتم رفعه عند تحرير الصفحة أو عنصر التحكم.
خطأ - هو حدث صفحة يحدث عندما يكون هناك استثناء غير معالج.
الحرف الأول – يتم رفعه عند تهيئة صفحة أو عنصر تحكم.
تحميل – يتم رفعه عند تحميل صفحة أو عنصر تحكم.
العرض المسبق – يتم رفعه عند عرض الصفحة أو عنصر التحكم.
إلغاء التحميل – يتم رفعه عند إلغاء تحميل صفحة أو عنصر تحكم من الذاكرة.
يتم تنفيذ كافة عناصر تحكم ASP.NET كفئات، وتقوم برفع الأحداث عندما يقوم المستخدم بتنفيذ إجراء محدد عليها. على سبيل المثال، عندما ينقر المستخدم على زر، يتم إنشاء حدث "النقر". للتعامل مع الأحداث، هناك خصائص مدمجة ومعالجات للأحداث. يتم ترميز تطبيقات التعامل مع الأحداث للرد على حدث ما واتخاذ الإجراء المناسب بشأنه.
بشكل افتراضي، يقوم Visual Studio بإنشاء معالج حدث يتضمن روتينًا فرعيًا يعالج الجملة. تسمي هذه الجملة عناصر التحكم والأحداث التي يتعامل معها البرنامج.
علامة ASP للتحكم في الزر:
<asp:Button ID="btnCancel" runat="server" Text="Cancel" />
تطبيق التعامل مع الحدث لحدث النقر:
Protected Sub btnCancel_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnCancel.ClickEnd Sub
يمكن أيضًا ترميز الحدث بدون عبارة Handles. يجب بعد ذلك تسمية المعالج باسم الحدث المناسب الذي يناسب خاصية عنصر التحكم.
علامة ASP للتحكم في الزر:
<asp:Button ID="btnCancel" runat="server" Text="Cancel" Onclick="btnCancel_Click" />
تطبيق التعامل مع الحدث لحدث النقر:
Protected Sub btnCancel_Click(ByVal sender As Object, ByVal e As System.EventArgs)End Sub
تتضمن أحداث التحكم الشائعة ما يلي:
حدث | ملكية | يتحكم |
---|---|---|
انقر | عند النقر | زر، زر الصورة، زر الارتباط، الصورة النقطية |
يأمر | عند الأمر | زر، زر الصورة، زر الارتباط |
تم تغيير النص | OnTextChanged | مربع النص |
تم تغيير الفهرس المحدد | OnSelectedIndexChanged | القائمة المنسدلة، ومربع القائمة، وقائمة أزرار الاختيار، ومربع القائمة مع مربعات الاختيار |
تم التحقق منه | OnCheckedChanged | خانة الاختيار، زر الاختيار |
تتسبب بعض الأحداث في إعادة نشر النموذج مرة أخرى إلى الخادم على الفور، وتسمى هذه الأحداث بأحداث رد الاتصال. على سبيل المثال، انقر فوق أحداث مثل Button.Click.
لا يتم إرسال بعض الأحداث مرة أخرى إلى الخادم على الفور، وتسمى هذه الأحداث بأحداث غير رد الاتصال.
على سبيل المثال، قم بتغيير الأحداث أو أحداث التحديد مثل TextBox.TextChanged أو CheckBox.CheckedChanged. يمكن استدعاء هذه الأحداث التي لا تتعلق برد الاتصال على الفور عن طريق تعيين خاصية AutoPostBack الخاصة بها على true.
الحدث الافتراضي لكائنات الصفحة هو حدث التحميل. وبالمثل، يحتوي كل عنصر تحكم على حدث افتراضي. على سبيل المثال، الحدث الافتراضي لعنصر تحكم الزر هو الحدث Click.
يمكن إنشاء معالجات الأحداث الافتراضية في Visual Studio ببساطة عن طريق النقر المزدوج فوق عنصر التحكم في طريقة عرض التصميم. يعرض الجدول التالي الأحداث الافتراضية لقائمة عناصر التحكم الشائعة:
يتحكم | الحدث الافتراضي |
---|---|
التحكم في الإعلانات (AdRotator) | تم إنشاء الإعلان |
قائمة العناصر (قائمة نقطية) | انقر |
زر | انقر |
التحكم في التقويم (التقويم) | تم تغيير التحديد |
خانة الاختيار | تم التحقق منه |
قائمة الاختيار | تم تغيير الفهرس المحدد |
داتاغريد | تم تغيير الفهرس المحدد |
قائمة البيانات | تم تغيير الفهرس المحدد |
القائمة المنسدلة | تم تغيير الفهرس المحدد |
الارتباط التشعبي | انقر |
زر الصورة | انقر |
نقطة الاتصال (ImageMap) | انقر |
زر الارتباط التشعبي (LinkButton) | انقر |
القائمة المنسدلة ذات التحديد الفردي أو المتعدد (ListBox) | تم تغيير الفهرس المحدد |
قائمة طعام | القائمة البند انقر |
زر راديو | تم التحقق منه |
مجموعة أزرار الاختيار (RadioButtonList) | تم تغيير الفهرس المحدد |
مثال
يتضمن هذا المثال صفحة بسيطة تحتوي على تسميات التحكم وزر التحكم. عند حدوث أحداث الصفحة، مثل Page_Load، وPage_Init، وPage_PreRender، وما إلى ذلك، سترسل رسالة سيتم عرضها بواسطة عنصر التحكم في التسمية. عند النقر على زر ما، يتم إطلاق الحدث Button_Click، وإرسال رسالة معروضة بواسطة التسمية أيضًا.
قم بإنشاء موقع ويب جديد واسحب عنصر التحكم في التسمية وعنصر التحكم في الزر من مربع أدوات عناصر التحكم. باستخدام خصائص الإطار، قم بتعيين معرفات التحكم إلى .lblmessage ثم .btnclick وفقًا لذلك. اضبط خاصية النص الخاصة بعنصر التحكم بالزر على "انقر".
ملف العلامات (.aspx):
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="eventdemo._Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <div> <asp:Label ID="lblmessage" runat="server" > </asp:Label> <br /> <br /> <br /> <asp:Button ID="btnclick" runat="server" Text="Click" onclick="btnclick_Click" /> </div> </form> </body></html>
انقر نقرًا مزدوجًا فوق عرض التصميم وانتقل إلى الكود الموجود خلف الملف. يتم إنشاء حدث Page_Load تلقائيًا بدون أي تعليمات برمجية. اكتب السطر التالي من التعليمات البرمجية الذي لا يحتاج إلى شرح:
using System;using System.Collections;using System.Configuration;using System.Data;using System.Linq;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.HtmlControls;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Xml.Linq;namespace eventdemo { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { lblmessage.Text += "Page load event handled. <br />"; if (Page.IsPostBack) { lblmessage.Text += "Page post back event handled.<br/>"; } } protected void Page_Init(object sender, EventArgs e) { lblmessage.Text += "Page initialization event handled.<br/>"; } protected void Page_PreRender(object sender, EventArgs e) { lblmessage.Text += "Page prerender event handled. <br/>"; } protected void btnclick_Click(object sender, EventArgs e) { lblmessage.Text += "Button click event handled. <br/>"; } }}
تنفيذ الصفحة. تعرض العلامات تحميل الصفحة وتهيئة الصفحة وأحداث معاينة الصفحة. انقر فوق الزر لرؤية التأثير: