در ADO.NET دو روش برای کار با داده ها وجود دارد: DataSet و DataReader. هر کدام از این دو روش موارد استفاده خود را دارند. اگر هدف نشان دادن سریع داده هاست DataReader مناسب تر از DataSet می باشد ولی اگر قصد انجام عملیاتی بر روی داده ها دارید و لازم است داده ها در حافظه مقیم شوند باید از DataSet استفاده کنید. در این مقاله چهار روش برای نمایش محتوای یک DataSet در فرمهای وب بیان می شود.
——————————————————————————–
وقتی از DataSet استفاده می کنید بدلیل انبار شدن داده ها در حافظه، استفاده نادرست از آن می تواند سرعت و کارایی برنامه وب شما را کاهش دهد، البته استفاده نادرست از DataSet در برنامه های ویندوز هم تاثیر منفی در کارایی برنامه دارد ولی مسلما به اندازه برنامه های وب محسوس نیست و این بدلیل آن است که در برنامه های وب امکان انجام درخواستهای همزمان از یک صفحه وجود دارد.
در این مقاله چهار روش برای نمایش محتوای یک DataSet در فرمهای وب بیان می شود:
۱- استفاده از کنترل DataGrid
۲- استفاده از کنترل DataList
۳- استفاده از کنترل Repeater
۴- استفاده از یک متغیر
هر DataSet می تواند یک یا چندین DataTable را شامل شود. برای وارد کردن داده ها به داخل DataSet نیاز به استفاده از یک DataAdapter داریم. انجام مراحل زیر برای وارد کردن داده ها در DataSet اساسی هستند:
• ایجاد یک Connection به پایگاه داده:
Dim strConn as string = “initial catalog=Northwind;integrated security=SSPI;persist security info=False;workstation id=DOTNET”
Dim MyConn as New SQLConnection(strConn)
• ایجاد DataSet:
Dim ds as DataSet=New DataSet()
• ایجاد DataAdapter:
Dim MySQL as string = “Select Employees.FirstName, Employees.LastName, Employees.Title from Employees”
Dim da as New SQLDataAdapter(MySQL,MyConn)
• بعد از انجام این مراحل متد Fill از شئ DataAdapter را فراخوانی می کنیم:
da.Fill(ds,”Employees”)
پارامتر اول در این متد نام DataSet و پارامتر دوم نام DataTable جدیدی است که می خواهیم تعریف کنیم.
اکنون DataSet شامل داده هایی می باشد که از DataAdapter به داخل آن انتقال یافته اند. برای نشان دادن داده های داخل DataSet از یکی از روشهای زیر استفاده می کنیم:
۱- کنترل DataGrid
با استفاده از کد زیر می توان جدول Employees را (که در داخل DataSet قرار دارد) در DataGrid نشان داد:
MyDataGrid.Datasource=ds.Tables(“Employees”).DefaultView
MyDataGrid.DataBind()
همانطور که مشاهده می کنید ابتدا با مشخص نمودن خصوصیت Datasource کنترل DataGrid – که جدول Employees واقع در DataSet می باشد – داده ها به داخل DataGrid انتقال می یابند و سپس با فراخوانی متد DataBind داده ها بر روی صفحه نشان داده می شوند.
۲- کنترل DataList
برای مقید کردن داده ها بر روی کنترلهای DataList و Repeater نیز همانند کنترل DataGrid می توانید کدهای زیر را بکار ببرید:
MyDataList.Datasource=ds.Tables(“Employees”).DefaultView
MyDataList.DataBind()
۳- کنترل Repeater
MyRepeater.datasource = ds.Tables(“Employees”).DefaultView
MyRepeater.DataBind()
کنترلهای DataGrid ،DataList و Repeater کنترلهای DataBound نام دارند. کنترلهای DataBound امکان تنظیم منابع داده را به صورت Programmatically فراهم می کنند. این کنترلها بعد از تنظیم منبع داده ای بر روی آن تکرار شده و بر اساس فرمت تعیین شده برای کنترل، داده ها را نمایش می دهند. فرمت فقط برای یک سطر مشخص می شود و همه سطرها بر اساس آن نشان داده می شوند.
این که کدام کنترل را برای نمایش داده ها انتخاب کنید به این بستگی دارد که می خواهید چه مقدار کنترل بر روی فرمت نمایش داده ها داشته باشید. کنترل DataGrid آسانترین و ساده ترین راه برای به نمایش درآوردن داده ها در قالب یک جدول است. Visual Studio .NET هم قالب های آماده ای را از طریق گزینه Auto Format برای تغییر ظاهری کنترل DataGrid (و همچنین DataList) در اختیار ما قرار می دهد. DataList کمی پیچیده تر از DataGrid است ولی امکان کنترل زیادی را در رابطه با فرمت بندی از طریق استفاده از الگوها فراهم می کند. کنترل Repeater نسبت به DataList هم پیچیده تر است و می توان کنترل خیلی بیشتری را هنگام استفاده از الگوها بر روی فرمت نمایش داده ها اعمال نمود.
به دلیل این که کنترلهای DataList و Repeater به طور پیش فرض فرمت داخلی ندارند هنگام تعریف باید آنها را فرمت بندی نماییم (فرمت کنترل DataGrid را هم می توان تغییر داد ولی اگر تغییر ندهیم مشکلی پیش نمی آید و داده ها نمایش داده می شوند). به عنوان نمونه برای کنترل DataList می توان چنین نوشت:
<asp:DataList id=”MyDataList” runat=”server” GridLines=”None” cellpadding=”2″ cellspacing=”2″ Headerstyle-BackColor=”#8080C0″ Headerstyle-Font-Name=”Arial” Headerstyle-Font-Size=”8″ Font-Name=”Arial” Font-Bold=”false” Font-Size=”8″>
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, “firstname”) %> <%# DataBinder.Eval(Container.DataItem, “lastname”) %> – <b><i><%#DataBinder.Eval(Container.DataItem, “Title”) %> </i></b>
</ItemTemplate>
</asp:DataList>
DataBinder.Eval متدی است که برای ارزیابی عبارات data-binding در زمان اجرا از آن استفاده می شود. ساختار اصلی این متد به صورت زیر است:
<%# DataBinder.Eval(Container, EvalExpression, FormatExpression) %>
Container عبارتی را بیان می کند که می خواهیم ارزیابی کنیم، برای کنترلهای DataBound همیشه مقدار Container.DataItem را به جای Container قرار می دهیم. EvalExpression نام خصوصیت یا آیتمی است که باید ارزیابی شود و FormatExpression یک عبارت با فرمت رشته ای است که برای فرمت کردن نتیجه که یک رشته است استفاده می شود.
۴- استفاده از متغیر برای نشان دادن محتوای DataSet
برای نشان دادن محتوای DataSet می توان تکنیک استفاده از متغیر را بکار برد. برای این کار ابتدا محتوای DataSet را در یک متغیر از نوع String قرار می دهیم. کد لازم برای انجام این کار به صورت زیر است:
Dim sEmps as String
Dim dr As DataRow
For Each dr In ds.Tables(“Employees”).Rows
sEmps += “<b>” & dr(“firstname”) & ” ” & dr(“lastname”) & ” </b> – ” & dr(“Title”) & “<br>”
Next
روشی که در اینجا استفاده شده است پیمایش تمام سطرهای جدول مورد نظر با استفاده از یک حلقه For Each … Next است که همه آنها را در داخل متغیر از نوع String قرار می دهد. سپس خصوصیت text یک کنترل literal را برابر این متغیر قرار می دهیم:
litEmps.text=sEmps
برنامه آماده مربوط به مقاله را می توانید از بالای همین صفحه دریافت نمایید.
دیدگاه خود را بیان کنید.
باید وارد سایت شده باشید برای دیدگاه دادن