نحوه ايجاد كنترل های سرويس دهنده توسط اسكريپت New Page 1



ساير




 

 

 

SAKHA RAVESH CO.

 ا مروز

 دوشنبه  8  خرداد  1396  2017  May  29   Monday ToDay
صفحه اصلی  مقالات نکته هادايره المعارف خودآموزها | تازه ها خود آزمون ها    
  نسخه قابل چاپ  

    5 4 3 2 1 

 عنوان

 نويسنده

  مشاهده

 تعداد آراء

 امتياز

 كنترل های پويا در ASP.NET ( بخش دوم )

 مديريت وب

13783

6

4.8

با توجه به جایگاه داده در عصر حاضر و  لزوم نگاه جامع به این مقوله مهم ، بر آن شدیم تا محوریت فعالیت های خود را بر  روی این موضوع متمرکز نمائیم . از این رو گروه فابک با شعار فناوری اطلاعات برای کسب وکار شکل گرفت و  خدمات خود  را از طریق  سایت www.fabak.ir  به مخاطبان محترم عرضه می نماید

 

كنترل های پويا در ASP.NET

كنترل های پويا در ASP.NET ( بخش دوم )
در بخش اول به ضرورت استفاده پويا از كنترل های سرويس دهنده در برنامه های وب اشاره و با نحوه ايجاد ، دستيابی به  خصلت ها و توليد رويدادها توسط اسكريپت آشنا شديم . در اين بخش به بررسی يك نمونه مثال كاربردی خواهيم پرداخت تا توان خود را جهت ايجاد كنترل های سرويس دهنده به صورت پويا افزايش دهيم .
به دليل استفاده از كنترل <asp:Literal > ، در ابتدا با اين كنترل و جايگاه استفاده از آن آشنا می شويم .

كنترل سرويس دهنده   <asp:Literal >
در زمان كدينگ برنامه های وب به مواردی برخورد خواهيم كرد كه لازم است متن و يا تگ های XHTML را به يك PlaceHolder به منظور كمك در مديريت و فرمت كنترل هائی كه به صورت پويا ايجاد شده اند ، اضافه نمائيم . به عنوان نمونه ، ممكن است لازم باشد كه يك پاراگراف ، خطوط خالی و يا كاراكترهای خاصی را به همراه كنترل ها استفاده نمائيم تا آنها با يك فرمت مناسب بر روی صفحه نمايش داده شوند . با توجه به اين كه متن ، رشته و يا تگ های XHTML را نمی توان در PlaceHolder قرار داد ، می بايست آنها را توسط اسكريپت در زمان ايجاد كنترل ها  به PlaceHolder اضافه نمود . در چنين مواردی می توان از كنترل   <asp:Literal >  استفاده نمود .
ايجاد كنترل Literal توسط اسكريپت همانند ساير كنترل های سرويس دهنده در ASP.NET است . بدين منظور كافی است كه  كنترل به عنوان يك كنترل Literal تعريف و به خصلت Text آن يك متن و يا رشته مبتنی بر XHTML نسبت داده شود و در ادامه آن را به  PlaceHolder اضافه كرد .از كنترل های Literal به تعداد مورد نياز می توان در يك PlaceHolder استفاده نمود .
در كد زير ، يك كنترل Literal تعريف تا در ادامه يك خط خالی در بين ساير كنترل های پويای ايجاد شده ، اضافه نمايد .

Dim MyBreak As Literal
MyBreak.Text = "<br/>"
MyPlaceHolder.Controls.Add(MyBreak)

مثال : ايجاد كنترل های سرويس دهنده با استفاده از اسكريپت
در اين مثال قصد داريم متناسب با هر يك از گروه مقالات تعريف شده در بانك اطلاعاتی مقالات ، دكمه هائی را بر روی يك فرم وب قرار دهيم تا كاربران پس از كليك بر روی هر يك از آنها ، مقالات مربوط به گروه انتخابی را مشاهده نمايند .دكمه ها به صورت پويا و در زمان اجراء ايجاد خواهند شد و متناسب با تغيير داده موجود در بانك ، وضعيت آنها نيز تغيير خواهد كرد . شكل زير ، خروجی برنامه را نشان می دهد .

 ايجاد كنترل های سرويس دهنده به صورت پويا


بدين منظور از يك بانك اطلاعاتی اكسس با نام Maghalat_Srco.mdb  كه شامل دو جدول Article_Type و Article_Spec  است ، استفاده خواهيم كرد  . در اولين جدول با نام Article_Type ، گروه های مختلف مقالات ذخيره می گردد .

جدول Article_Type

 نام فيلد

نوع

Group_ID

AutoNumber ، Primery Key

Name

Text

Description

Text

در جدول دوم با نام  Article_Spec ، مشخصات هر يك از مقالات ذخيره می گردد .

جدول Article_Spec

 نام فيلد

نوع

 Article_ID

AutoNumber ، Primery Key

Group_ID

Number , Integer

 Title

Text

در ادامه يك فرم وب با نام Show_Article_By_Group.aspx  را ايجاد می نمائيم كه در هر يك از بخش های  Script و Html آن از امكانات متعددی استفاده شده است .

در بخش Html از سه كنترل سرويس دهنده با اهداف زير استفاده شده است :

  • <asp:PlaceHolder> : تعريف يك ناحيه برای نمايش كنترل هائی كه آنها را به صورت پويا و در  زمان اجراء متناسب با داده موجود در بانك اطلاعاتی ايجاد خواهيم كرد . در اين مثال ، برای هر گروه مقاله تعريف شده در بانك اطلاعاتی يك button به صورت پويا ايجاد خواهد شد . 

  • <asp:AccessDataSource> : با استفاده از كنترل منبع داده فوق ، به بانك اطلاعاتی Maghalat_Srco.mdb دستيابی و در اولين مرتبه ( زمان استقرار صفحه در حافظه و از طريق روتين page_Load ) ، متناسب با داده موجود در جدول Article_Type  ، دكمه های مورد نظر را ايجاد خواهيم كرد . از كنترل فوق در مرتبه دوم و از طريق روتين Get_Articles نيز استفاده خواهد شد تا متناسب با دكمه ای كه كاربر بر روی آن كليك نموده است ، مقالات مربوط به آن گروه از جدول Article_Spec  بازيابی و در Gridview نمايش داده شوند .

  • <asp:GridView> : از كنترل فوق به منظور نمايش مقالات مربوط به يك گروه خاص استفاده می گردد ( ساده ترين نوع استفاده از يك GridView  ) .


در بخش script از دو روتين Page_Load و   Get_Article با اهداف زير استفاده شده است .

  • Page_Load : در اين روتين ، پس از دستيابی به بانك اطلاعاتی اشاره شده ، اطلاعات موجود در جدول Article_Type بازيابی و متناسب با داده موجود ،  دكمه هائی برای هر يك از گروه مقالات ايجاد خواهد شد . علاوه بر ايجاد پويای هر  button  ، سبك نمايش Button و توليد Event handler مورد نياز ( Get_Articles ) نيز از طريق اين روتين انجام خواهد شد .

  • Get_Articles : در اين روتين ، متناسب با اين كه كاربر بر روی كدام button كليك نموده است ، يك query به صورت پويا و پارامتريك ايجاد و اجراء می گردد . در نهايت زمينه نمايش ركوردهای بازيابی شده در Gridview نيز فراهم می گردد .

<%@ Import Namespace="System.Data.OleDb" %>
<%@ Import Namespace="System.Drawing" %>

<SCRIPT Runat="Server">

Sub
Page_Load

Dim DBConnection As OleDbConnection
Dim DBCommand As OleDbCommand
Dim DBReader As OleDbDataReader
Dim SQLString As String
Dim Counter As Integer = 0

DBConnection = New OleDbConnection( _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Server.MapPath("~/OurDataBase/Maghalat_Srco.mdb"))
DBConnection.Open()

SQLString = "SELECT DISTINCT Group_ID , Name FROM Article_Type order by Name"
DBCommand = New OleDbCommand(SQLString, DBConnection)
DBReader = DBCommand.ExecuteReader()

While DBReader.Read()
  Dim MyButton as New Button
  MyButton.Text = DBReader("Name")
  MyButton.CommandName = DBReader("Group_ID")
  MyButton.Width = Unit.Parse("100px")
  MyButton.Font.Size = FontUnit.Parse("8pt")
  MyButton.Font.Name = "Tahoma"
  AddHandler MyButton.Command, AddressOf Get_Articles
  ButtonArea.Controls.Add(MyButton)
  Dim MyBlank As New Literal
  MyBlank.Text = "&nbsp;&nbsp;"
  ButtonArea.Controls.Add(MyBlank)
  Counter += 1
  If Counter Mod 3 = 0 Then
      Dim MyBreak As New Literal
      MyBreak.Text = "<br/>"
      ButtonArea.Controls.Add(MyBreak)
  End If
End While
DBReader.Close()
DBConnection.Close()

End Sub

Sub
Get_Articles (Src as Object, Args As CommandEventArgs)

Dim SQLString As String
SQLString = "SELECT Title ,Description FROM Article_Spec " & _
"WHERE Group_ID = " & Args.CommandName & "

ArticlesSource.SelectCommand = SQLString

End Sub

</SCRIPT>

<form Runat="Server">
ايجاد كنترل های سرويس دهنده به صورت پويا

<asp:PlaceHolder id="ButtonArea" Runat="Server"/>

<asp:AccessDataSource id="ArticlesSource" Runat="Server"
    DataFile="~/OurDataBase/Maghalat_Srco.mdb"
    SelectCommand="SELECT Title , Description FROM Article_Spec "/>

<asp:GridView id="BookGrid" DataSourceID="ArticlesSource" Runat="Server" />
 
 
</form>

توضيحات

  • پس از استقرار صفحه در حافظه ، بانك اطلاعاتی فعال و متناسب با داده موجود در جدول Article_Type ، برای هر گروه مقاله يك button ايجاد خواهد شد .

  • برای هر ركورد يك شی جديد Button ايجاد و به خصلت Text آن ، مقدار Name ( مربوط به ركورد بازيابی شده كه نشاندهنده نام گروه مقاله است )  نسبت داده می شود . برای نمايش مطلوب Button ، برخی خصلت های آن مقداردهی می گردند ( نظير نوع فونت و يا اندازه آن ) .

  • با توجه به اين كه دكمه ها به عنوان يك Command button پيكربندی شده اند ، خصلت CommandName معادل Group_ID  در نظر گرفته شده و در ادامه مقدار Group_ID به روتين Get_Articles  ارسال تا مقالات مربوط به گروه انتخابی را در يك GridView نمايش دهد .

  • يك Command Event توسط اسكريپت برای button مشخص می گردد كه به برنامه فرعی Get_Articles  اشاره می نمايد . در نهايت ، button به PlaceHolder اضافه می شود .

  • از طريق حلقه تكرار ، هر يك از دكمه ها ايجاد و به PlaceHolder اضافه می شوند . در اين مثال ، شش button ايجاد خواهد شد چراكه جدول Article_Type حاوی شش ركورد است ( شش نوع گروه برای مقالات تعريف شده است ) و متناسب با كاهش و يا افزايش گروه مقالات تعداد Button بر روی فرم وب تغيير خواهد كرد.

  • بلافاصله پس از هر Button يك زوج فضای خالی به منظور تفكيك افقی دكمه ها از يكديگر قرار می گيرد . بدين منظور از كنترل Literal كه مقدار خصلت Text آن معادل  "nbsp;&nbsp&"  در نظر گرفته شده است ، استفاده می گردد . اين كنترل پس از اين كه يك Button در PlaceHolder مستقر گرديد ، در مكان مربوطه درج خواهد شد .

  • همچنين از يك خط خالی پس از نمايش سه button در هر سطر ، استفاده شده است . اين كاراكتر با استفاده از يك كنترل  Literal به PlaceHolder  اضافه شده است كه مقدار خصلت آن  " </br >"   در نظر گرفته شده است .

  • از يك شمارنده برای تشخيص اضافه شدن يك  Literal به PlaceHolder استفاده شده است تا به كمك آن بتوانيم تشخيص دهيم كه آيا در يك سطر سه Button نمايش داده شده است و يا خير.
    در صورتی كه عبارت Counter Mod 3 = 0  درست باشد يك خط خالی به كمك كنترل Literal  به PlaceHolder اضافه خواهد شد .



جستجو

مقالات                 
دايره المعارف       
دوره های آموزشی


 

 

مشاهده گروه ها



              

 

 تهيه شده در شرکت سخا روش -  1382