سلام کاربران عزیز ، حالتون خوبه؟ امیدوارم که سلامت باشید.امروز میخوام در مورد 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 را نشان می دهد. روی دکمه کلیک کرده تا اثر آن را مشاهده کنید :