سلام کاربران عزیز ، حالتون خوبه؟ امیدوارم که سلامت باشید.امروز میخوام در مورد asp کمی توضیح بدم . با ما همرا ه باشید.یک رویداد چیست؟

Event عبارتند از یک رخداد یا عمل (action) مانند کلیک موس، فشردن دکمه، حرکت موس و یا هر اطلاعیه و پیغام دیگری که توسط سیستم تولید می شود (system generated notification). یک فرایند (process) از طریق event ها ارتباطات لازم را برقرار می کنند. به عنوان مثال می توان به interrupt ها (وقفه های ایجاد شده) اشاره کرد که در حقیقت رخدادها یا event های تولید شده توسط سیستم هستند. به مجرد اینکه event ی اجرا شده و یا به عبارتی دیگر رخ می دهد، برنامه ی کاربردی (application) مورد نظر باید بتواند به آن واکنش نشان داده و آن event را مدیریت کند.

Event ها در ASP.NET توسط دستگاه یا رایانه ی سرویس گیرنده (client) راه اندازی و فعال می گردند ولی در رایانه ی سرویس دهنده (server) مدیریت می شوند. به عنوان مثال، می توان به زمانی اشاره کرد که کاربر روی یک دکمه که روی صفحه  مرورگر به نمایش گذاشته شده کلیک می کند، به دنبال این عمل کاربر ، یک رخداد کلیک (event click) اجرا می شود. مرورگر این رخداد سمت سرور (client-side event) را با ارسال (post کردن) آن به server (سرویس دهنده) مدیریت (handle) می کند.

سرور زیرروالی (subroutine) دارد که مشخص می کند به محض رخ دادن event مربوطه چه کارهایی باید صورت گیرد یا چه اتفاقاتی باید روی دهد که به آن زیرروال، event handler اطلاق می گردد. از این رو زمانی که پیغام event به سرور فرستاده می شود، سرور بررسی می کند آیا رخداد کلیک (click event) یک event handler مرتبط با آن  رخداد را دارد یا خیر. در صورت وجود رخداد مورد نظر، event handler مرتبط با آن رخداد اجرا می شود.

آرگومان های event

Event handler های ASP.NET عموماً دو پارامتر ورودی (parameter ( گرفته و مقدار void برمی گردانند. اولین پارامتر نشانگر شئی است که باعث اجرا یا روی دادن event موردنظر شده و پارامتر دومی آرگومان event محسوب می شود.

نحوه ی نگارش یا syntax کلی یک event به ترتیب زیر است :

private void EventName (object sender, EventArgs e);

رخدادهای مربوط به Application – رخدادهای Session

مهم ترین رخدادهای application به ترتیب زیر می باشند :

Application_Start – زمانی فعال یا اجرا می شود که وب سایت / برنامه ی کاربردی (application/website) راه اندازی شده باشد.

Application_End – زمانی اجرا می شود که وب سایت / برنامه ی کاربردی متوقف شده باشند.

مهم ترین رخدادهای مربوط به session عبارتند از :

Session_Start – زمانی روی می دهد که کاربر یک صفحه را از application مربوطه درخواست (request) کند.

Session_End – هنگامی فعال می شود که یک  session به اتمام برسد.

رخدادهای مربوط به Control و Page

رخدادهای متداول Control و Page (page event ها و control event ها) به ترتیب زیر می باشند :

DataBinding – زمانی اجرا و فعال می شود که یک control به یک منبع داده (data source) مقید و متصل می شود.

Disposed – زمانی فعال سازی می شود (روی می دهد) که page یا control آزاد (release) شده باشد.

Error – یک رخداد مربوط به صفحه (page event) است که در صورت پرت (throw) شدن یک استثناء مدیریت نشده (unhandled exception)  روی می دهد.

Init  – زمانی فعال می شود که صفحه (page) یا control مقداردهی اولیه (initialize) شده باشد.

Load  – هنگامی اجرا می شود که صفحه یا یک control بارگذاری شده باشد.

PreRender – این event زمانی فعال می شود که صفحه یا control قرار است render (اجرا، بارگذاری و نمایش داده) شود

Unload  – زمانی اجرا می شود که صفحه یا control از روی حافظه unload می شود.

مدیریت رخدادها با استفاده از control ها

تمامی control های ASP.NET به صورت کلاس هایی پیاده سازی شده و دارای event هایی می باشد که به هنگام اجرای عملیات خاص روی آن ها توسط کاربر فعال (fire) می شوند، به عنوان مثال می توان به زمانی اشاره کرد کاربر یک دکمه را کلیک کرده و به دنبال آن رخداد کلیک (click event) روی می دهد. برای  مدیریت رویدادها  خصیصه ها (attribute) و event handler های توکار (built-in) وجود دارد. Event handler ها به گونه ی برنامه نویسی می شوند که نسبت به یک رویداد معین عکس العمل خاصی نشان داده و متعاقباً عملیات لازم را روی آن انجام دهد.

به صورت پیش فرض، visual studio با لحاظ کردن (قرار دادن) یک handles clause (clause = یک عبارتیست که از مجموعه محدودی لفظ (literal) تشکیل شده و زمانی true می باشد که حداقل یکی از لفظ (literal) های تشکیل دهنده ی آن true باشد.) داخل subprocedure (زیر رویه) یک event handler ایجاد می کند. Clause نام برده control و event ی که توسط procedure (رویه) مدیریت (handle) می شود را نام گذاری می کند.

تگ ASP ویژه ی یک button control (کنترل ویژه ی دکمه) به صورت زیر می باشد :

<asp:Button ID=”btnCancel” runat=”server” Text=”Cancel” />

حال event handler (اداره کننده ی رخداد) مخصوص click event (رخداد کلیک) را مشاهده می کنیم :

Protected Sub btnCancel_Click(ByVal sender As Object, ByVal e As System.EventArgs)

Handles btnCancel.Click

End Sub

Event/  رخداد

Attribute خصیصه /

Controls / ابزار کنترلی

Click

OnClick

Button, image button, link button, image map

Command

OnCommand

Button, image button, link button

TextChanged

OnTextChanged

Text box

SelectedIndexChanged

OnSelectedIndexChanged

Drop-down list, list box, radio button list, check box list.

CheckedChanged

OnCheckedChanged

Check box, radio button

البته این امکان نیز وجود دارد که یک evenرا بدون استفاده از Handles clause (عبارت Handles) کدنویسی کرد، در این صورت handler (اداره کننده) باید بر مبنای خصیصه ی رخداد (event attribute) control مربوطه نام گذاری شود.

تگ ASP ویژه ی Click event (رخداد کلیک) :

Protected Sub btnCancel_Click(ByVal sender As Object, ByVal e As System.EventArgs)

جدول زیر  Control eventهای متداول را فهرست می کند :

Control / ابزار کنترلی

Default Event / رخداد پیش فرض

AdRotator

AdCreated

BulletedList

Click

Button

Click

Calender

SelectionChanged

CheckBox

CheckedChanged

CheckBoxList

SelectedIndexChanged

DataGrid

SelectedIndexChanged

DataList

SelectedIndexChanged

DropDownList

SelectedIndexChanged

HyperLink

Click

ImageButton

Click

ImageMap

Click

LinkButton

Click

ListBox

SelectedIndexChanged

Menu

MenuItemClick

RadioButton

CheckedChanged

RadioButtonList

SelectedIndexChanged

برخی از رخدادها باعث می شوند فرم (form) بلافاصله به سرویس دهنده (server) برگردانده (post back) شود. این دسته از event ها، رخدادهای non-postback اطلاق می گردند، از میان چنین رخدادهایی می توان TextBox.TextChanged و CheckBox.CheckedChanged را نام برد. رخدادهای nonpostback  را می توان با تخصیص مقدار true به خاصیت (property) AutoPostBack آن ها (یا تنظیم خاصیت AutoPostBack آن ها روی true) بلافاصله به سرور برگرداند (postpack).

رخدادهای پیش فرض ( Default Events )

رخداد پیش فرض شئ Page، رخداد Load می باشد. به طور مشابه هر control ی یک رخداد پیش فرض دارد. به عنوان نمونه می توان از button control سخن به میان آورد که رخداد پیش فرض آن رخداد Click می باشد.

Event handler پیش فرض را می توان داخل محیط visual studio ایجاد کرد، برای این منظور کافی است روی control در design view دوبار کلیک کنید. جدول ذیل برخی از رخدادهای پیش فرض control های متداول را فهرست کرده :

مثال

مثال زیر صفحه ساده ای را ارائه می دهد که دربردارنده ی یک label control و یک button control می باشد. به مجرد اینکه رخدادهای مربوط به صفحه (page event) مانند Page_Load،   Page_Iniو Page_PreRender فعال می شوند (روی می دهند)، پیغامی فرستاده می شود که توسط label control نمایش داده می شود. هنگامی که دکمه کلیک می شود به دنبال آن رخداد Button_Click فعال گشته و پیغامی ارسال می گردد که روی label نمایش داده می شود.

یک وب سایت جدید ایجاد کرده، سپس به ترتیب یک label control و button control با مکان نمای موس از Control toolbox کشیده و روی وب سایت خود جای گذاری کنید.

ازطریق پنجره ی properties، ID های (شناسه های) .lblmessage. و .btnclick. را به ترتیب به control های مربوطه تخصیص دهید (آن ها را شناسه گذاری کنید). خاصیت (property) Text کنترل button را ‘Click’ قرار دهید (مقداردهی کنید).

فایل markup (نشانه گذاری شده): (.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>

روی design view دوبار کلیک کرده تا به source code یا code behind (کد برنامه) دسترسی پیدا کنید .رخداد 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/>”;

}

}

}

اکنون صفحه را اجرا کنید. label، رخدادهای page load (بارگذاری صفحه)، page initialization (مقداردهی اولیه ی صفحه) و pre-render را نشان می دهد. روی دکمه کلیک کرده تا اثر آن را مشاهده کنید :