آموزش 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 حمایت نمایید :

آیا مطالب این صفحه برای شما مناسب و مفید بوده است :

نام :                 
آدرس Email :    
 
نظر شما :  
 
سوال امنیتی : پایتخت ایران ؟      
حمایت از سایت Developer1