تفاوت بين DataList ، DataGrid و Repeater New Page 1



ساير




 

 

 

SAKHA RAVESH CO.

 ا مروز

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

    5 4 3 2 1 

 عنوان

 نويسنده

  مشاهده

 تعداد آراء

 امتياز

 تفاوت بين DataList ، DataGrid و Repeater (بخش اول)

 مديريت وب

9516

9

4

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

 

تفاوت بين DataList ، DataGrid و Repeater (بخش اول)

تفاوت بين DataList ، DataGrid و Repeater (بخش اول)

ASP.NET دارای مزايای متعددی نسبت به ASP کلاسيک است . يکی از مزايای فوق ، ارائه کنترل های سرويس دهنده متعددی در ارتباط با داده ها است  که از  آنان با نام Data Web control و يا Display Data Server Control  ياد می شود . کنترل های فوق با هدف تسهيل در امر نمايش داده ها طراحی شده اند . مثلا" DataGrid يک کنترل ايده آل به منظور نمايش داده در يک جدول با فرمت HTML است . علاوه بر کنترل DataGrid از دو کنترل داده ديگر به اسامی DataList و Repeater  استفاده می گردد :

  • DataGrid
  • DataList
  • Repeater

کنترل های فوق در موارد متعددی مشابه يکديگر می باشند . مثلا" گرامر استفاده شده به منظور نسبت دهی داده به کنترل ها ، وجود خصلت و رويدادهای مشابه نمونه هائی در اين زمينه می باشد . علیرغم وجود برخی شباهت ها بين کنترل های فوق  ، هر يک از آنان دارای مزايا و محدوديت های مختص به خود می باشند . برنامه نويسان برنامه های وب که از ASP.NET استفاده می نمايند و درگير طراحی و پياده سازی برنامه های وب با محوريت داده می باشند ، در زمان استفاده از کنترل های فوق دچار سردرگمی شده و همواره با اين پرسش مواجه هستند که کدام کنترل مناسب تر است ؟ انتخاب مناسب  يک کنترل داده به نوع عملياتی که قصد انجام آنان را در يک برنامه وب داريم ، بستگی خواهد داشت .
در اين مقاله قصد داريم به بررسی نقاط قوت و محدوديت های هر يک از کنترل های فوق پرداخته و حالات خاصی را بررسی نمائيم که جايگاه و ضرورت استفاده از کنترل مورد نظر را مشخص می نمايد . در ابتدا و در بخش اول اين مقاله به بررسی نقاط مشترک بين کنترل های داده وب خواهيم پرداخت و قدرمشترک بين آنان را مشخص می نمائيم .

نقاط مشترک بين کنترل های داده
مهمترين وجه اشتراک بين کنترل های DataGrid ، DataList و Repeater  ، استفاده از خصلتی با نام DataSource و يک متد با نام DataBind است . به منظور نسبت دهی داده به هر يک از کنترل های فوق از فرآيند مشابهی استفاده می گردد :

  • نسبت دهی داده هائی که می بايست نمايش داده شوند به خصلت DataSource 
  • فراخوانی متد DataBind 

يکی ديگر از نقاط مشترک  بين کنترل های فوق ، بکارگيری تعداد مشخصی از DataWebControlNameItems  است . يک DataGrid  از تعدادی DataGridItems ، يک DataList  از تعدادی  DataListItems  و يک Repeater  از تعدادی  RepeaterItems  تشکيل می گردد . پس از فراخوانی متد DataBind ، در مجموعه رکوردهای موجود در DataSource حرکت نموده و برای هر يک از آنان يک نمونه جديد DataWebControlNameItem  ايجاد و به کنترل اضافه می گردد . پس از ايجاد يک نمونه DataWebControlNameItem  ، به خصلت DataItem آن  مقدار مربوط به رکورد جاری DataSource نسبت داده شده و متد DataBind مربوط به DataWebControlNameItem فراخوانده شده تا ستون ها ی مربوط به رکورد Datasource به DataWebControlNameItem نسبت داده می شوند . ( در اين رابطه تفاوت اندکی بين  سه کنترل اشاره شده وجود دارد که در ادامه به بررسی آنان خواهيم پرداخت ) . علاوه بر وجود شباهت های فوق ، کنترل های فوق از سه رويداد مشابه نيز استفاده می نمايند : 

  •  ItemCreated  : رويداد فوق  يک مرتبه به ازای هر DataWebControlNameItem که به کنترل اضافه می گردد ، فعال می گردد . فعال شدن رويداد فوق قبل از نسبت دهی خصلت DataItem مربوط به DataWebControlNameItem می باشد .

  • ItemDataBound  : رويداد فوق  نيز يک مرتبه به ازای هر DataWebControlNameItem که به کنترل اضافه می گردد، فعال می شود ولی زمان فعال شدن آن  پس از نسبت دهی خصلت DataItem مربوط به DataWebControlNameItem خواهد بود .

  • ItemCommand : رويداد فوق هر مرتبه که رويداد Command برای يک Button و يا LinkButton موجود در کنترل فعال می شود ، اجراء می گردد .

بررسی عملی وجه اشتراک بين سه کنترل داده
به منظور بررسی نقاط مشترک بين هر يک از کنترل های اشاره شده يک مثال عملی را دنبال می نمائيم . در اين مثال قصد داريم محتويات  جدول Srcotable  بانک اطلاعاتی  SrcoTestDB.mdb را در خروجی نمايش دهيم . جدول فوق دارای سه  فيلد اطلاعاتی با نام ArticlesName ، ArticlesDescription  و ID است .

مرحله اول : ايجاد بانک اطلاعاتی SrcoTestDB.mdb و جدول Srcotable

مرحله دوم : ايجاد يک صفحه وب ASP.NET با نام TestWebDataControl.aspx  و  استفاده از کنترل DataGrid و مشخص نمودن فرمت مورد نظر برای نمايش داده های موجود در بانک اطلاعاتی 

<form runat="server" >

<asp:DataGrid id="SrcoGrid1" runat="server"
  
   AutoGenerateColumns="False"
   Font-Names="Tahoma"
   Font-Size="8pt"
   CellPadding="1"
   GridLines="Horizontal"
   BorderWidth="3"
   BackColor="#F0F0F0"
   ForeColor="Black"
   ShowFooter="True"
   HeaderStyle-BackColor="#707070"
   HeaderStyle-ForeColor="#FFFFFF"
   HeaderStyle-Font-Bold="True"
   HeaderStyle-HorizontalAlign="Center"
   AlternatingItemStyle-ForeColor="Navy"
   AlternatingItemStyle-BackColor="#CCCC99"
   FooterStyle-BackColor="#336699"
   FooterStyle-ForeColor="#FFFFFF"
   FooterStyle-HorizontalAlign="Left"
   FooterStyle-Font-Bold="True" >
 <Columns>
   <asp:BoundColumn
      DataField="ArticlesName"
      HeaderText="عنوان مقاله " />

    <asp:BoundColumn
       DataField="ArticlesDescription"
       HeaderText="شرح"
       ItemStyle-HorizontalAlign="Right"
       FooterText="تهيه شده در شرکت سخاروش"
      FooterStyle-Font-Size="8pt" />

</Columns>

</asp:DataGrid>
</form>

مرحله سوم : ايجاد  و نسبت دهی يک DataSet  از طريق Page_Laod

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

<SCRIPT runat="server">

Dim DBConnection As OleDbConnection
Dim DBCommand As OleDbCommand
Dim DBReader As OleDbDataReader
Dim SQLString As String

Sub Page_Load
  If Not Page.IsPostBack Then

   DBConnection = New OleDbConnection( "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    "Data Source=C:\InetPub\wwwRoot\SrcoTestDB.mdb")
     DBConnection.Open()
     SQLString = "SELECT * FROM Srcotable Order by id DESC "
     DBCommand = New OleDbCommand(SQLString, DBConnection)
     DBReader = DBCommand.ExecuteReader()
     SrcoGrid1.DataSource = DBReader
     SrcoGrid1.DataBind()
    DBReader.Close()
    DBConnection.Close()

  End If

End Sub

</SCRIPT>

مرحله چهارم :  پس از ذخيره کد فوق در فايل  TestWebDataControl.aspx و مشاهده آن در مرورگر ، خروجی زير را خواهيم داشت :  

توضيحات :
پس از فراخوانی متد DataBind ،  رکوردهای مربوط به DataSet نسبت داده شده به خصلت DataSource استخراج می گردند . در زمان حرکت در DataSet ، در حقيقت در بين مجموعه ای از سطرهای مربوط به DataTable پيش فرض DataSet حرکت می نمائيم . مجموعه Rows شامل تعدادی از نمونه های DataRow است که  برای هر يک از رکوردهائی که توسط يک SQL query خاص برگردانده شده است ، ايجاد می گردند . برای هر DataRow ، در ابتدا يک DataGridItem ايجاد می گردد.  در ادامه رويداد ItemCreated مربوط به  DataGrid  فعال می گردد . در مرحله بعد ، DataRow به  خصلت DataItem مربوط به DataGridItem نسبت داده می شود .در نهايت رويداد ItemDataBound مربوط به DataGrid فعال می شود . اين فرآيند برای تمامی DataRows تکرار خواهد شد .
فرآيند فوق در سه کنترل اشاره شده مشابه بوده و تنها تفاوت موجود در اين رابطه ، ايجاد يک  DataListItem ، در کنترل DataList و يک RepeaterItem  درکنترل Repeater می باشد ( در مقابل ايجاد يک DataGridItem ، در کنترل DataGrid ) .

برگرفته از سايت  http://www.4guysfromrolla.com 



جستجو

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


 

 

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



              

 

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