آموزش برنامه نویسی ، پایگاه داده sql server
آموزشگاه برنامه نویسی تحلیل داده : دوره های آموزشی برنامه نویسی و طراحی وب ASP.Net , C# , HTML , CSS , SQL Server


آموزشگاه برنامه نویسی مجتمع فنی تهران میرداماد : دوره های آموزشی برنامه نویسی و طراحی وب ASP.Net , C# , HTML , CSS , SQL Server

 آموزش ASP.Net به زبان ساده   >   آموزش مدل فرم های وب ASP.Net Web Forms
درس یازدهم : آموزش کار با شی داده ای HashTable در فرم های وب ASP.Net

مقدمه :

در درس قبلی ، با نحوه کار با شی داده ای ArrayList آشنا شدید . همانطور که متوجه شدید ، شی ArrayList یک آرایه تک بعدی بوده و فقط به ازای هر آیتم ، می تواند یک مقدار را دریافت کند .
اما آیتم های کنترل های لیست وار در ASP.Net ، معمولا دارای یک جفت مقدار ( Value ) و متن ( Text ) هستند ، که برای تعیین نیاز به یک آرایه دو بعدی دارند .
در این آیتم ها ، مقداری که در سطح برنامه از آیتم خوانده شده و در کدنویسی استفاده می شود ، درون پارامتر Value و متنی که در خروجی و بر روی صفحه نمایش داده می شود ، درون خاصیت Text ذخیره می شوند .
شی HashTable یک آرایه دو بعدی است که مقدار هر آیتم را به صورت یک جفت ( Key / Value ) نگهداری می کند . در این شی Key همان متن یا ( Text ) و Value نیز مقدار آیتم می باشد .
همچنین در شی آرایه ای HashTable ، می توان از Key به عنوان اندیس ( Indexes ) در آرایه استفاده کرد که به وسیله آنها ، می توان عملیات جستجو در اعضای آرایه را با سرعت و دقت زیادی انجام داد .
همانند شی ArrayList ، آیتم ها را در شی HashTable به وسیله متد ( )Add اضافه می کنیم ، با این تفاوت که در پرانتر مقابل متد ( )Add ، دو مقدار یکی برای Key و دیگری برای Value تعریف می شود .
مثال : در مثال زیر ، نحوه تعریف یک شی HashTable را در رویداد Page_Load صفحه نشان می دهد ، تا به محض اجرای صفحه ، ایجاد و مقدار دهی شود :

کد <script runat="server">
    Sub Page_Load
      
 if Not Page.IsPostBack then
             
dim mycountries=New Hashtable
              mycountries.Add("N","Norway")
              mycountries.Add("S","Sweden")
              mycountries.Add("F","France")
              mycountries.Add("I","Italy")
    
   end if
  
  end sub
</script>

نحوه اتصال کنترل های سرور به شی داده ای Hashtable :

شی HashTable می تواند به صورت اتوماتیک مقادیر متنی ( Text ) و مقادیر واقعی ( Values ) را برای کنترل های سرور زیر تولید کند :

  • <asp:RadioButtonList>
  • <asp:CheckBoxList>
  • <asp:DropDownList>
  • <asp:Listbox>

کنترل های فوق مقادیر ارسالی ( Text , Values ) را از شی HashTable دریافت کرده و نمایش می دهند .
برای اتصال هر یک از کنترل های فوق به شی HashTable ، در ابتدا یک کنترل سرور لیست وار ( برای مثال <asp:RadioButtonList> ) را بدون هیچ عنصر درونی asp:ListItem ، همانند کد زیر بر روی یک صفحه aspx. ایجاد نمایید :

کد <form id="Form1" runat="server">
     <asp:RadioButtonList id="rb" runat="server" AutoPostBack="True" />
</form>

سپس اسکریپت زیر را در رویداد اجرای اولیه صفحه ( Page_Load ) قرار دهید ، تا ابتدا شی HashTable ایجاد شده و سپس به کنترل سرور مورد نظر متصل شود :

کد <script runat="server">
   Sub Page_Load
     
 if Not Page.IsPostBack then
         
dim mycountries=New Hashtable
          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 Hashtable
          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 که از نوع HashTable بوده را ایجاد و اعضای آن را اضافه می کند .
  • در خط بعدی ، شی mycountrires به عنوان منبع داده ای ( DataSource ) برای کنترل با id برابر با rb که یک کنترل از نوع asp:RadioButtonList است ، تعیین شده است .
  • سپس به ترتیب کلیدها ( " key " ) و مقادیر ( " Values " ) ، به عنوان مقادیر واقعی ( DataValueField ) و مقدار متنی ( DataTextValue ) کنترل rb تعیین شده اند .
    در این حالت کلیدها به عنوان مقادیر واقعی هر آیتم کنترل لسیت وار asp:RadioButtonList و " Value " به عنوان متن آیتم نشان داده خواهند شد .
  • در آخر نیز با استفاده از متد ( )DataBind ، عمل اتصال کنترل سرور به شی HashTable انجام شده است .

نمایش متن آیتم انتخاب شده در کنترل لیست وار ASP.Net :

در مرحله آخر از راهکار ، همانطور که در کد زیر مشاهده می کنید ، قطعه کد دیگری نوشته ایم که به وسیله آن ، هر گاه کاربر بر روی یکی از آیتم های کنترل لیست وار asp:RadioButtonList کلیک نماید ، اجرا شده و متن آن آیتم را نشان می دهد . قطعه کد جدید ایجاد شده را به صورت Bold نمایش داده ایم . توجه داشته باشید که تابع displayMessage درون متد onSelectedIndexChanged کنترل asp:RadioButtonList قرار گرفته است که به محض کلیک بر روی هر آیتم اجرا می شود :

کد <script runat="server">
   Sub Page_Load
     
 if Not Page.IsPostBack then
         
dim mycountries=New Hashtable
          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