تور لحظه آخری
امروز : شنبه ، 19 آبان 1403    احادیث و روایات:  امام علی (ع):سه چیز از نشانه های یقین هستند: کوتاهی آرزو، اخلاص در عمل، بی رغبتی به دنیا
سرگرمی سبک زندگی سینما و تلویزیون فرهنگ و هنر پزشکی و سلامت اجتماع و خانواده تصویری دین و اندیشه ورزش اقتصادی سیاسی حوادث علم و فناوری سایتهای دانلود گوناگون شرکت ها

تبلیغات

تبلیغات متنی

صرافی ارکی چنج

صرافی rkchange

سایبان ماشین

دزدگیر منزل

تشریفات روناک

اجاره سند در شیراز

قیمت فنس

armanekasbokar

armanetejarat

صندوق تضمین

Future Innovate Tech

پی جو مشاغل برتر شیراز

لوله بازکنی تهران

آراد برندینگ

خرید یخچال خارجی

موسسه خیریه

واردات از چین

حمية السكري النوع الثاني

ناب مووی

دانلود فیلم

بانک کتاب

دریافت دیه موتورسیکلت از بیمه

قیمت پنجره دوجداره

بازسازی ساختمان

طراحی سایت تهران سایت

irspeedy

درج اگهی ویژه

تعمیرات مک بوک

دانلود فیلم هندی

قیمت فرش

درب فریم لس

زانوبند زاپیامکس

روغن بهران بردبار ۳۲۰

قیمت سرور اچ پی

خرید بلیط هواپیما

بلیط اتوبوس پایانه

قیمت سرور dl380 g10

تعمیرات پکیج کرج

لیست قیمت گوشی شیائومی

خرید فالوور

پوستر آنلاین

بهترین وکیل کرج

بهترین وکیل تهران

اوزمپیک چیست

خرید اکانت تریدینگ ویو

خرید از چین

خرید از چین

تجهیزات کافی شاپ

نگهداری از سالمند شبانه روزی در منزل

بی متال زیمنس

ساختمان پزشکان

ویزای چک

محصولات فوراور

خرید سرور اچ پی ماهان شبکه

دوربین سیمکارتی چرخشی

همکاری آی نو و گزینه دو

کاشت ابرو طبیعی و‌ سریع

الک آزمایشگاهی

الک آزمایشگاهی

چراغ خطی

 






آمار وبسایت

 تعداد کل بازدیدها : 1827764584




هواشناسی

نرخ طلا سکه و  ارز

قیمت خودرو

فال حافظ

تعبیر خواب

فال انبیاء

متن قرآن



اضافه به علاقمنديها ارسال اين مطلب به دوستان آرشيو تمام مطالب
archive  refresh

تفاوت بين DataList ، DataGrid و Repeater


واضح آرشیو وب فارسی:راسخون:
تفاوت بين 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 OleDbConnectionDim DBCommand As OleDbCommandDim DBReader As OleDbDataReaderDim SQLString As StringSub Page_Load  If Not Page.IsPostBack Then   DBConnection = New OleDbConnection( "Provider=Microsoft.Jet.OLEDB.4.0;" & _    "Data Source=C:InetPubwwwRootSrcoTestDB.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 IfEnd Sub</SCRIPT> توضيحات : پس از فراخوانی متد 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 ) . کنترل DataGrid : • کنترل DataGrid به منظور نمايش داده در يک جدول HTML ، طراحی شده است. هر رکورد موجود در DataSource مرتبط با DataGrid به صورت يک سطر در جدول HTML نمايش داده می شود.• DataGrid دارای خصلتی با نام AutoGenerateColumns است که می تواند مقدار True و يا False را داشته باشد . در صورتی که مقدار خصلت فوق True باشد ( گزينه پيش فرض )، هر فيلد موجود در DataSource به عنوان يک ستون در جدول HTML نمايش داده می شود . در صورتی که خصلت AutoGenerateColumns مقدار False را دارا باشد ، برنامه نويسان می بايست ستون های مورد نظر برای نمايش را مشخص نمايند . • DataGrid ، هر رکورد موجود در DataSource را به عنوان يک سطر و هر فيلد را به صورت يک ستون در جدول نمايش می دهد .• با اين که DataGrid اين امکان را در اختيار پياده کنندگان قرار می دهد که بتوانند فرمت نمايش يک ستون خاص را با سليقه خود مشخص نمايند ( با استفاده از <asp:TemplateColumn> ) ، ولی کنترل فوق همچنان دارای محدوديت نمايش هر رکورد DataSource در يک سطر جدول HTML است .• صرفنظر از محدوديت اشاره شده ، کنترل فوق با توجه به ويژگی های متعددی که در اختيار طراحان و پياده کنندگان قرار می دهد ، يکی از رايج ترين کنترل های موجود به منظور نمايش داده است . مثلا" با نوشتن کد اندکی امکان مرتب سازی ، Paging و ويرايش داده ها فراهم می گردد . کنترل DataList : • کنترل DataList به منظور نمايش داده هائی که دارای layout سفارشی شده بالائی می باشند ، توصيه شده است .• کنترل DataList به صورت پيش فرض داده خود را در يک جدول HTML نمايش می دهد . • با استفاده از مقداری که به خصلت RepeateColumns نسبت داده می شود ، می توان تعداد رکورد DataSource به منظور نمايش در هر سطر جدول HTML را مشخص نمود ( بر خلاف DataGrid ) . مثلا" کد زير امکان نمايش دو رکورد DataSource را در هر سطر جدول HTML فراهم می نمايد . <asp:DataList runat="server" id="SrcoDataList1"   ...RepeatColumns="2">   <ItemTemplate>     <b>عنوان مقاله:</b><br />      <%# DataBinder.Eval(Container.DataItem, "ArticlesName") %>       <p>       <b>شرح</b><br />       <%# DataBinder.Eval(Container.DataItem, "ArticlesDescription") %>  </ItemTemplate></asp:DataList> • همانگونه که در کد فوق مشاهده می گردد ، DataList از تعدادی تمپليت تشکيل می گردد . تمپليت ها می توانند شامل ترکيبی از تگ های HTML و عبارات نسبت دهی داده باشند ( همانگونه که در ItemTemplate نشان داده شده است ) . عبارات نسبت دهی ، عباراتی هستند که محدوده آنان توسط علامت <% ...#%> مشخص شده و شامل کدهائی می باشند که همزمان با فراخوانی متد DataBind مربوط به DataListIItem ، اجراء خواهند شد . ItemTemplate ، تمپليتی را مشخص می نمايد که توسط هر يک از رکوردهای DataSource استفاده خواهد شد . کنترل DataList دارای تمپليت های متعددی است : □ AlternatingItemTemplate : در صورتی که مشخص گردد، هر رکورد DataSource از اين تمپليت در مقابل تمپليت ItemTemplate استفاده می نمايد( يکی در ميان ) . □ EditItemTemplate : تمپيلتی است که از آن در مواردی که يک سطر DataList در "وضعيت ويرايش " است ، استفاده می گردد .□ HeaderTemplate : تمپليتی است که از آن به منظور نمايش عنوان DataList استفاده می گردد( درصورتی که خصلت ShowHeader مقدار True را دارا باشد ). □ FooterTemplate : تمپيلتی است که از آن به منظور نمايش footer يک DataList استفاده می گردد ( درصورتی که خصلت Showfooter مقدار True را دارا باشد ) .□ Separator Template : در صورت تعريف ، پس از نمايش هر يک از آيتم های موجود در DataList از آن استفاده می گردد ( جداکننده هر يک از رکوردها ) .• DataList قادر به انجام عمليات مرتب سازی ، paging و ويرايش داده ها نيز می باشد. اين کنترل به منظور انجام عمليات فوق، نيازمتد برنامه نويسی بمراتب بيشتری نسبت به DataGrid است. بنابراين در صورتی که به هر يک از موارد اشاره شده نياز داشته باشيم ، DataGrid گزينه مناسبتری در اين رابطه خواهد بود. در صورت عدم نياز به پتانسيل های اشارشده و تمايل به اعمال کنترل بيشتردر رابطه با نحوه نمايش داده ها ( formatting) ، استفاده از کنترل DataList توصيه می گردد .کنترل Repeater : • کنترل Repeater بر خلاف کنترل های DataList و DataGrid از کلاس WebControl مشتق نشده است . بنابراين دارای خصلت هائی نظير Font، ForeColor، BackColor و BorderStyle نمی باشد ( معروف به خصلت های stylistic ) . • کنترل Repeater همانند کنترل DataList ، صرفا" از تمپليت ها حمايت نموده و دارای زيرمجموعه ای از تمامی تمپليت های قابل استفاده در يک DataList است . از تمپليت های زير می توان به همراه Repeater استفاده نمود : □ AlternatingItemTemplate □ ItemTemplate □ HeaderTemplate□ FooterTemplate □ SeparatorTemplate • کنترل Repeater حداکثر انعطاف لازم در خصوص توليد HTML را ارائه می نمايد . در حالی که کنترل DataGrid محتويات DataSource را در قالب يک جدول HTML و DataList در قالب يک جدول HTML و يا تگ های SPAN ، ارائه می نمايند ( متناسب با خصلت RepeateLayout مربوط به کنترل Repeater ) ، کنترل Repeater هيچگونه محتوای HTML را اضافه نمی نمايد، مگر اين که با صراحت آنان را در تمپيلت ها مشخص نمود . • Repeater يک کنترل مناسب به منظور نمايش داده درون يک ساختار مبتنی بر HTML خاص است ( مثلا" يک Unsorted List ) . همانگونه که در کد پائين مشاهده می گردد ، نمايش داده های موجود در يک بانک اطلاعاتی توسط يک Unsorted List با استفاده از يک Repeater بمراتب راحت تر از ساير کنترل های داده است : اضافه نمودن تگ <UL> به HeaderTemplate و تگ < UL/> به بخش FooterTemplate و تگ <li> به همراه فيلد DataSource مورد نظری است که قصد نمايش آن را در ItemTemplate داريم . <asp:Repeater runat="server" id="SrcoRepeater">  <HeaderTemplate>     <ul>   </HeaderTemplate>  <ItemTemplate>      <li>      <Font face="Tahoma">         <%# DataBinder.Eval(Container.DataItem, "ArticlesName") %>      </Font>      </il>  </ItemTemplate>  <FooterTemplate>     </ul>  </FooterTemplate></asp:Repeater> • در مواردی که قصد نمايش داده را با يک فرمت خاص ( غير از يک جدول HTML ) داشته باشيم، استفاده از کنترل Repeater توصيه می گردد . • کنترل Repeater دارای امکانات از قبل تعبيه شده ای به منظور انجام عملياتی نظير مرتب سازی ، ويرايش و يا Paging داده ، نمی باشد . در صورت ضرورت، می بايست پتانسيل های فوق از طريق برنامه نويسی به آن اضافه گردد . خلاصهدر دو مقاله ای که ارائه گرديد به نقاط مشترک و تفاوت بين سه کنترل داده DataGrid، DataList و Repeater اشاره گرديد . مهمترين نقطه مشترک بين سه کنترل فوق ، نحوه حرکت در بين يک DataSource و ايجاد يک مجموعه از DataWebControlNameItems است . علاوه برموارد فوق ، کنترل های فوق از سه رويداد مشابه ItemCreated ItemDataBound, ItemCommand نيز استفاده می نمايند .هر يک از کنترل های فوق دارای نقاط قوت و محدوديت های مختص به خود می باشند : • DataGrid يک گزينه بسيار مناسب برای نمايش سريع و ساده داده های موجود در يک بانک اطلاعاتی و در يک جدول با فرمت HTML است . کنترل فوق دارای امکانات پيشرفته ای نظير Paging ، مرتب سازی و ويرايش داده ها است .DataGrid دارای محدوديت اندکی در رابطه با فرمت عمومی ارائه داده است . • DataList دارای آزادی عمل بيشتری است . مثلا" همانگونه که مشاهده گرديد، با استفاده از خصلت RepeateColumns می توان چندين رکورد DataSource را در يک سطر جدول HTML نمايش داد . کنترل فوق به منظور نمايش محتوای مورد نظر از تمپليت ها استفاده می نمايد . تمپليت ها دارای پتانسيل بالائی به منظور سفارشی نمودن نحوه ارائه خروجی می باشند . • Repeater دارای کارآئی مطلوبی در خصوص نحوه ارائه خروجی است . تگ های HTML تفسير شده در کنترل Repeater ماحصل تگ های HTML توليد شده در تمپليت های مربوط به کنترل می باشد . بنابراين ما شاهد توليد HTML اضافه ای نخواهيم بود ( اين وضعيت در کنترل های DataGrid و DataList وجود دارد ) . کنترل Repeater دارای امکانات از قبل تعبيه شده ای به منظور انجام عملياتی نظير paging ، مرتب سازی و ويرايش داده نمی باشد .





این صفحه را در گوگل محبوب کنید

[ارسال شده از: راسخون]
[مشاهده در: www.rasekhoon.net]
[تعداد بازديد از اين مطلب: 329]

bt

اضافه شدن مطلب/حذف مطلب







-


گوناگون

پربازدیدترینها
طراحی وب>


صفحه اول | تمام مطالب | RSS | ارتباط با ما
1390© تمامی حقوق این سایت متعلق به سایت واضح می باشد.
این سایت در ستاد ساماندهی وزارت فرهنگ و ارشاد اسلامی ثبت شده است و پیرو قوانین جمهوری اسلامی ایران می باشد. لطفا در صورت برخورد با مطالب و صفحات خلاف قوانین در سایت آن را به ما اطلاع دهید
پایگاه خبری واضح کاری از شرکت طراحی سایت اینتن