آموزش ASP.Net به زبان ساده > آموزش مدل فرم های وب ASP.Net Web
Forms
درس دوازدهم : آموزش کار با شی داده ای SortedList در فرم های وب ASP.Net
مقدمه :
شی SortedList یک آرایه دو بعدی است که می تواند جفت های نام / مقدار را درون خود نگهداری
کند . یک شی SortedList به صورت اتوماتیک ، آیتم های خود را بر حسب حروف الفبا یا اعداد
مرتب می کند .
این در حالی است که شی های داده ای قبلی که با آنها کار کردیم ، مثل SortedList این کار
را به صورت اتوماتیک انجام نداده و بایستی از متد ( )Sort ، برای این منظور استفاده
می کردیم .
به وسیله متد ( )Add ، می توانید آیتم های مورد نظر خود را به شی SortedList اضافه
نمایید . این آیتم ها بایستی دارای 2 پارامتر ( Key ) یا کلید که برای کدنویسی در سطح
برنامه استفاده شده و ( Value ) یا مقدار که تعیین کننده متن آیتم جهت نمایش بر روی
صفحه است ، باشند .
نکته : یه وسیله متد ( )TrimToSize ، می توانید حداکثر تعداد آیتم
های یک شی داده ای SortedList را تعیین کنید .
شکل کلی تعریف و مقدار دهی یک شی داده ای SortedList به صورت زیر است :
|
کد
|
<script runat="server">
Sub Page_Load
if Not
Page.IsPostBack then
dim mycountries=New SortedList
mycountries.Add("N","Norway")
mycountries.Add("S","Sweden")
mycountries.Add("F","France")
mycountries.Add("I","Italy")
end if
end sub
</script>
|
توضیح کد : در مثال فوق ، یک شی داده ای SortedList با نام mycountries
را تعریف و مقدار دهی کرده ایم. توجه داشته باشید که تعریف این شی در رویداد لود اولیه
صفحه ( Page_Load ) که به محض اجرای صفحه رخ می دهد ، قرار داده شده ، تا به محض اجرای
صفحه ، این شی نیز ایجاد و مقدار دهی شود .
اتصال شی داده ای SortedList به کنترل های سرور ASP.Net :
شی داده ای SortedList ، می تواند متن و مقادیر لازم را برای کنترل های لیست وار زیر
در ASP.Net فراهم کند :
- <asp:RadioButtonList>
- <asp:CheckBoxList>
- <asp:DropDownList>
- <asp:Listbox>
کنترل های فوق مقادیر ارسالی ( Text , Values ) را از شی SortedList دریافت کرده و
نمایش می دهند .
برای اتصال هر یک از کنترل های فوق به شی SortedList ، در ابتدا یک کنترل سرور لیست
وار ( برای مثال <asp:RadioButtonList> ) را بدون هیچ عنصر درونی asp:ListItem
، همانند کد زیر بر روی یک صفحه aspx. ایجاد نمایید :
|
کد
|
<form id="Form1" runat="server">
<asp:RadioButtonList
id="rb" runat="server"
AutoPostBack="True" />
</form>
|
سپس اسکریپت زیر را در رویداد اجرای اولیه صفحه ( Page_Load ) قرار دهید ، تا ابتدا
شی SortedList ایجاد شده و سپس به کنترل سرور مورد نظر متصل شود :
|
کد
|
<script runat="server">
Sub Page_Load
if Not Page.IsPostBack
then
dim mycountries=New SortedList
mycountries.Add("N","Norway")
mycountries.Add("S","Sweden")
mycountries.Add("F","France")
mycountries.Add("I","Italy")
rb.DataSource=mycountries
rb.DataValueField="Key"
rb.DataTextField="Value"
rb.DataBind( )
end if
end sub
</script>
|
در نهایت کد کامل صفحه به صورت زیر خواهد شد . به کد دقت نمایید ، در ادامه به توضیح
آن خواهیم پرداخت :
|
کد
|
<script runat="server">
Sub Page_Load
if Not Page.IsPostBack
then
dim mycountries=New SortedList
mycountries.Add("N","Norway")
mycountries.Add("S","Sweden")
mycountries.Add("F","France")
mycountries.Add("I","Italy")
rb.DataSource=mycountries
rb.DataValueField="Key"
rb.DataTextField="Value"
rb.DataBind( )
end if
end sub
</script>
<html>
<body>
<form id="Form1" runat="server">
<asp:RadioButtonList id="rb" runat="server" AutoPostBack="True"
/>
</form>
</body>
</html>
|
|
خروجی
|
مشاهده خروجی مثال
|
توضیح کد فوق :
- در ابتدا یک دستور شرطی چک می کند که آیا صفحه از سرور بازگشته ( Page.IsPostBack )
یا خیر . اگر از سرور باز نگشته بود ( یعنی برای اولین بار است که اجرا می شود ) شی
mycountrires که از نوع SortedList بوده را ایجاد
و اعضای آن را اضافه می کند .
- در خط بعدی ، شی mycountrires به عنوان منبع داده ای ( DataSource ) برای کنترل با
id برابر با rb که یک کنترل از نوع asp:RadioButtonList است ، تعیین شده است .
- سپس به ترتیب کلیدها ( " key " ) و مقادیر ( " Values " ) ، به عنوان مقادیر واقعی
( DataValueField ) و مقدار متنی ( DataTextValue ) کنترل rb تعیین شده اند .
در این حالت کلیدها به عنوان مقادیر واقعی هر آیتم کنترل لسیت وار asp:RadioButtonList
و " Value " به عنوان متن آیتم نشان داده خواهند شد .
- در آخر نیز با استفاده از متد ( )DataBind ، عمل اتصال کنترل سرور به شی
SortedList انجام شده است .
نمایش متن آیتم انتخاب شده در کنترل لیست وار ASP.Net :
در مرحله آخر از راهکار ، همانطور که در کد زیر مشاهده می کنید ، قطعه کد دیگری نوشته
ایم که به وسیله آن ، هر گاه کاربر بر روی یکی از آیتم های کنترل لیست وار asp:RadioButtonList
کلیک نماید ، اجرا شده و متن آن آیتم را نشان می دهد . قطعه کد جدید ایجاد شده را به
صورت Bold نمایش داده ایم . توجه داشته باشید که تابع
displayMessage درون متد onSelectedIndexChanged کنترل asp:RadioButtonList
قرار گرفته است که به محض کلیک بر روی هر آیتم اجرا می شود :
|
کد
|
<script runat="server">
Sub Page_Load
if Not Page.IsPostBack
then
dim mycountries=New SortedList
mycountries.Add("N","Norway")
mycountries.Add("S","Sweden")
mycountries.Add("F","France")
mycountries.Add("I","Italy")
rb.DataSource=mycountries
rb.DataValueField="Key"
rb.DataTextField="Value"
rb.DataBind( )
end if
end sub
sub displayMessage(s as Object,e As EventArgs)
lbl1.text="Your favorite country is: " & rb.SelectedItem.Text
end sub
</script>
<html>
<body>
<form id="Form1" runat="server">
<asp:RadioButtonList id="rb" runat="server" AutoPostBack="True"
onSelectedIndexChanged="displayMessage" />
<p> <asp:label
id="lbl1" runat="server" /> </p>
</form>
</body>
</html>
|
|
خروجی
|
مشاهده خروجی مثال
|
توضیحات کد فوق :
در رویداد تغییر آیتم کنترل لیست وار مثال یعنی کنترل asp:RadioButtonList ، که رویداد
onSelectedIndexChanged است ، تابع ( )displayMessage را قرار داده ایم . این
رویداد متن آیتم انتخاب شده را همراه با یک متن ثابت به کاربر نمایش می دهد .
همچنین برای اینکه با تغییر آیتم انتخاب شده کنترل asp:RadioButtonList ، صفحه به سرور
ارسال ( PostBack ) شود و کدهای مورد نظرمان مجدد اجرا شوند ، مقدار خاصیت AutoPostBack
آن را بر روی True تنظیم کرده ایم ، تا به محض کلیک بر روی هر یک از آیتم های کنترل
، صفحه Refresh شود .
راجع این مطلب
سوال یا اشکالی دارید ؟! آن را در انجمن سایت مطرح نمایید ...
>>>>> ورود به انجمن تخصصی
نطر خودتان درباره این صفحه را با ما در میان گذاشته و در صورت تمایل از Developer1
حمایت نمایید :