آموزش ASP.Net به زبان ساده > آموزش مدل فرم های وب ASP.Net Web
Forms
درس چهارم : آموزش کار با مدیریت کننده رویدادها ( Event Handlers ) در فرم های وب
ASP.Net
مقدمه - مدیریت کننده رویداد ( Event Handlers ) چیست ؟ :
یک مدیریت کننده رویداد تابع یا دستوری است که در هنگام رخ دادن یک رویداد خاص اجرا
می شود . برای مثال شما کدی طراحی می کنید تا پس از کلیک بر روی یک دکمه فرمان یا submit
فرم اجرا شود .
به کد زیر دقت نمایید :
|
کد
|
<%
lbl1.Text="The date and time is " & now()
%>
<html>
<body>
<form id="Form1" runat="server">
<h3><asp:label id="lbl1" runat="server" /></h3>
</form>
</body>
</html>
|
در این کد یک کنترل Asp.Net از نوع label داریم که برای نمایش متن بکار می رود . درون
صفحه متنی برای آن تعیین شده است ، ولی در کد بالای صفحه که به زنگ قرمز مشخص شده است
، مقدار خاصیت Text برای کنترل توسط یک دستور تعیین شده است . کد فوق به دلیل اینکه
درون هیچ مدیریت کننده رویدادی قرار ندارد ، هیچگاه اجرا نمی شود ! . بنابراین
مقدار متنی کنترل label خالی خواهد ماند .
به عبارت دیگر برای اجرای کدهای مورد نظر بایستی آنها را درون یک تابع یا مدیریت کننده
رویداد قرار دهیم .
رویداد Page_Load یا اجرای آغازین صفحه :
این رویداد یکی از هزاران رویدادی است که در Asp.Net می توان استفاده نمود . این رویداد
زمانی رخ می دهد که صفحه لود یا اجرا شود . کدهایی که می خواهید به محض اجرا و شروع
صفحه ، اجرا شوند را بایستی در این رویداد قرار دهید .
کدی که در مثال قبل داشتیم را این بار درون رویداد Page_Load قرار داده تا با شروع
صفحه اجرا شده و متن درون کنترل Lable را به مقدار دلخواه ما تغییر دهد . بصورت زیر
:
|
کد
|
<script runat="server">
Sub Page_Load
lbl1.Text="The date and time is " & now()
End Sub
</script>
<html>
<body>
<form id="Form1" runat="server">
<h3>
<asp:label id="lbl1" runat="server" />
</h3>
</form>
</body>
</html>
|
|
خروجی
|
مشاهده خروجی مثال
|
خاصیت Page.Is Post Back و کاربرد آن :
هنگامی که صفحه برای اولین بار ساخته و نمایش داده می شود ، رویداد Page_Load رخ می
دهد . اما زمانی را فرض کنید که صفحه به سرور ارسال شده و با نتیجه ای برگردد .
یعنی چه :مثلا شما برای روی یک دکمه فرمان در صفحه کلیک کرده ، اطلاعات فرم به سرور
ارسال می شود ، سپس نتیجه از سرور بازگشته و صفحه Refresh می شود . در این حالت می
گویند صفحه به اصطلاح Post Back شده است .
وقتی این اتفاق رخ دهد مقدار خاصیت Page.IsPostBack صفحه که در حالت
عادی False است به True تغییر کرده و می توانید در رویداد های خود از آن استفاده نمایید
، تا کد مورد نظر شما فقط در زمانی که صفحه PostBack شده اجرا شود نه در حالتی که برای
اولین بار اجرا می شود ! (Page_Load) .
مثال :
در مثال زیر دو رویداد نوشته شده که اولی در هنگامی که مقدار خاصیت Page.IsPostBack
بر روی False بوده ( یعنی صفجه برای اولین بار است که لود می شود ) ، اجرا شده و
رویداد دوم در زمانی رخ می دهد که کاربر بر روی دکمه فرمان مثال کلیک نماید .
به کد مثال و توضیجات آن که در ادامه آمده است ، دقت نمایید .
|
کد
|
<script runat="server">
Sub Page_Load
if Not Page.IsPostBack then
lbl1.Text="The
date and time is " & now()
end if
End Sub
Sub submit (s As Object, e As EventArgs)
lbl2.Text="Hello World!"
End Sub
</script>
<html>
<body>
<form id="Form1" runat="server">
<h3><asp:label
id="lbl1" runat="server" /></h3>
<h3><asp:label
id="lbl2" runat="server" /></h3>
<asp:button
ID="Button1" text="Submit" onclick="submit" runat="server" />
</form>
</body>
</html>
|
|
خروجی
|
مشاهده خروجی مثال
|
توضیح کد مثال :
- در مثال فوق ، در ابتدا که صفحه اجرا می شود ، رویداد Page_Load
رخ می دهد . در این رویداد یک کد شرطی نوشته شده ، که بررسی می کند آیا صفحه از سرور
بازگشته ( Page.IsPostBack ) یا خیر ، ( یعنی اولین بار است که دارد اجرا می شود یا
نه ).
اگر صفحه برای اولین بار بوده که اجرا می شود ، بنابراین مقدار خاصیت Page.IsPostBack
آن False بوده و دستور کد آبی رنگ اجرا می شود . توسط این دستور یک عبارت با تاریخ
و زمان جاری سرور نمایش داده می شود .
- اما رویداد دوم با نام ( ) submit ، که به رنگ سبز نمایش داده
شده ، زمانی اتفاق می افتد که کاربر بر روی دکمه فرمان Submit
کلیک نماید . در این حالت صفحه به سرور Post شده و باز می گردد . بنابراین مقدار خاصیت
Page.IsPostBack آن True می شود .
در نتیجه کد قسمت آبی برای با دوم اجرا نشده و تاریخ Refresh نمی شود ، اما متن کنترل lbl2 به مقدار
Hello World! تغییر می کند .
راجع این مطلب
سوال یا اشکالی دارید ؟! آن را در انجمن سایت مطرح نمایید ...
>>>>> ورود به انجمن تخصصی
نطر خودتان درباره این صفحه را با ما در میان گذاشته و در صورت تمایل از Developer1
حمایت نمایید :