كنترل های منبع داده در ASP.NET 2.0
برای نمايش اطلاعات بر روی صفحات وب از چهار روش و يا منبع اساسی استفاده می گردد :
• درج محتويات ثابت به صورت دستی در بطن صفحات : در اين روش محتويات مورد نظر مستقيما" و به صورت دستی در بطن يك صفحه وب قرار داده می شود. برای تعريف يك ساختار نمايشی مناسب از تگ های Html استفاده می گردد . به منظور توليد صفحات، می توان از ابزارهای توليد مختلفی نظير FrontPage و يا حتی يك اديتور ساده متنی استفاده نمود .
• توليد محتويات با استفاده از اسكريپت های سمت سرويس گيرنده يا سرويس دهنده : در اين روش به صورت اتوماتيك ، مجموعه ای از اسكريپت های سمت سرويس دهنده و يا سرويس گيرنده اجراء و اطلاعات مورد نياز به منظور نمايش در صفحات وب را توليد می نمايند . اطلاعات ممكن است به صورت ثابت و يا با بكارگيری مجموعه ای از توابع تعبيه شده در يك زبان برنامه نويسی و يا اشياء سمت سرويس دهنده، توليد گردند.
• پردازش بر روی داده های ورودی : در اين روش با پردازش بر روی داده ورودی ، اطلاعات مورد نياز به منظور نمايش بر روی صفحات وب توليد می گردد . در واقع ، بر روی داده های خام پردازش مورد نياز توسط اسكريپت ها انجام تا اطلاعات جديدی برای نمايش بر روی صفحات وب توليد گردد .
• بازيابی و پردازش اطلاعات از منابع داده خارجی : در اين روش اطلاعات از منابع داده خارجی استخراج ( بازيابی ) و بر روی صفحات وب نمايش داده می شود . اطلاعات شخصی ، سازمانی و ... در منابع ذخيره سازی عمومی ذخيره و پس از بازيابی و در صورت لزوم انجام پردازش های مورد نياز بر روی صفحات وب نمايش داده می شوند .
هدف اصلی صفحات ASP.NET كاهش و يا حذف فرآيند درج دستی اطلاعات درون صفحات وب است . با تركيب محتويات مورد نياز به منظور نمايش در صفحات وب با تگ های Html ، نگهداری ، پشتيبانی و بهنگام سازی صفحات وب برای پياده كنندگان مشكل می گردد . بهنگام سازی و ويرايش محتويات صفحات وب به صورت دستی ، علاوه بر اين كه توجيه زمانی ندارد ، مشكلات خاص خود را برای پياده كنندگان صفحات وب نيز به دنبال خواهد داشت .
بهترين گزينه به منظور نگهداری اطلاعات ، جداسازی آنان از صفحاتی است كه قرار است آنان را نمايش دهند . در چنين مواردی صرفا" در صفحات وب ، مكان و فرمت نمايش اطلاعات مشخص می گردد و اطلاعات در مكانی متمايز از صفحات وب نگهداری می گردند . پس از درخواست يك صفحه ، اطلاعات از منابع داده بازيابی و در محل تعيين شده برروی صفحات وب قرار خواهند گرفت . در واقع ، صفحات بطور اتوماتيك و پويا در زمان درخواست ايجاد و شامل آخرين اطلاعاتی می باشند كه بصورت بلادرنگ و Live از منابع داده خارجی استخراج شده اند .
در ادامه به بررسی چهار روش فوق خواهيم پرداخت تا از اين رهگذر جايگاه كنترل های منبع داده ارائه شده در ASP.NET 2.0 مشخص و با اين نوع كنترل ها از دو بعد مفاهيم و عمليات آشنا شويم .
روش اول : درج محتويات ثابت به صورت دستی در بطن صفحات
مثال : در مثال زير اطلاعات به صورت دستی در يك صفحه وب درج و از تگ های Html به منظور تعريف فرمت نمايش آنان استفاده شده است .
<html> |
روش دوم : توليد محتويات با استفاده از اسكريپت های سمت سرويس گيرنده يا سرويس دهنده
مثال : در مثال زير ، اسكريپت موجود در روتين Page_Load اجراء و پس از توليد اطلاعات مورد نياز ، با استفاده از تگ های Html نحوه نمايش آنان بر روی صفحه وب مشخص می گردد . در مثال فوق از تابع Date ويژوال بيسيك و كنترل های سرويس دهنده خروجی استفاده شده است .
پس از توليد اطلاعات توسط اسكريپت ، به منظور نمايش آنان در صفحه از كنترل سرويس دهنده خروجی <asp:Label> استفاده شده است . به كنترل فوق يك مشخصه ( id ) نسبت داده شده است تا امكان دستيابی به آن از طريق اسكريپت های سمت سرويس دهنده موجود در روتين Page_Load فراهم گردد. اسكريپت فوق يك رشته از كاراكترهای متنی و Html را به خصلت Text كنترل label و با نام Paragraph نسبت می دهد. توجه داشته باشيد كه در اين مثال از هيچگونه تگ Html بطور مستقيم استفاده نشده است .
<SCRIPT Runat="Server"> |
روش سوم : پردازش بر روی داده های ورودی
مثال : در مثال زير ، يك كنترل TextBox در اختيار كاربر قرار داده شده است تا داده مورد نظر را وارد نمايد . پس از درج داده توسط كاربر و كليك بر روی دكمه "Submit" ، روتين مربوطه فعال و پس از انجام عمليات مورد نظر ، نتايج به همراه تگ های Html در يك كنترل خروجی label نوشته می گردند .در اين مثال از سه كنترل سرويس دهنده استفاده شده است :
• يك كنترل asp:Textbox جهت درج داده توسط كاربر
• يك كنترل asp:Button جهت فراخوانی روتين مربوطه
• يك كنترل asp:label جهت تعريف يك ناحيه خروجی به منظور نمايش اطلاعات توليد شده
پس از كليك بر روی دكمه مربوطه ، داده ورودی توسط كاربر در عدد هفت ضرب و حاصل با متن ثابت و تگ های Html تركيب و در ناحيه خروجی مشخص شده توسط كنترل label نمايش داده می شود . عمليات فوق توسط روتين MultiPly_Seven انجام می شود . توجه داشته باشيد كه در اين مثال تمام خروجی توسط اسكريپت توليد شده است .
<SCRIPT Runat="Server"> |
روش چهارم : بازيابی و پردازش داده از طريق منابع داده خارجی
مثال : در اين مثال از اطلاعات موجود در جدول Products مربوط به بانك اطلاعاتی TestDb.mdb به منظور نمايش اطلاعات بر روی صفحه وب استفاده شده است .
تمامی پردازش های سمت سرويس دهنده از طريق دو كنترل سرويس دهنده موجود بر روی صفحه انجام می شود :
• asp:GridView ، يك كنترل نمايش اطلاعات است و به يك منبع داده خارجی مرتبط می گردد . كنترل فوق در نهايت به صورت اتوماتيك اطلاعات بازيابی شده را در قالب يك جدول ( حاوی سطرها و ستون ها) ، نمايش خواهد داد .
• كنترل asp:AccessDataSource ، اطلاعات را از بانك اطلاعاتی استخراج می نمايد . ارتباط كنترل فوق با GridView از طريق خصلت DataSourceID برقرار شده است . اطلاعات بازيابی شده در فرمتی كه توسط GridView مشخص شده است ، نمايش داده خواهند شد . Style خاصی در ارتباط با جدول بكار گرفته نشده است . كنترل GridView دارای مجموعه ای كامل از گزينه های لازم به منظور تعيين لی اوت و يا style جدول نمايش اطلاعات است . كنترل های ورودی داده متفاوتی را می توان به صفحه اضافه نمود تا كاربران قادر به انتخاب اطلاعات مورد نظر خود باشند ( بازيابی و نمايش اطلاعات در كنترل های خروجی بر اساس خواسته كاربر)
<html> |
• اطلاعات همواره به روز و صحيح می باشند .
• در اكثر سايت های تجاری ، اغلب اطلاعات در يك بانك اطلاعاتی ذخيره می گردد. از بانك اطلاعاتی به عنوان مخزن تامين اطلاعات مورد نياز برای انجام عمليات و مديريت فرآيندها استفاده می گردد . در چنين مواردی ، صفحات وب بهنگام و به سرعت آخرين اطلاعات موجود را نمايش خواهند داد ( صفحات وب Live ) . استخراج داده از اينگونه منابع ذخيره سازی ، در زمان صدور درخواست انجام می شود .
• صفحات وب بندرت نيازمند تغيير بوده و كد صفحات در زمان تغيير محتويات تغيير نخواهد كرد . در اين مدل ، اطلاعات درمنابع ذخيره سازی داده تغيير داده شده و ماحصل آن بر روی صفحات وب منعكس خواهد شد . در چنين مواردی نيازی به كاركنان فنی به منظور نگهداری و بهنگام سازی اطلاعات نخواهد بود . در واقع، افرادی كه از منابع ذخيره سازی داده نگهداری می نمايند ، نگهداری اطلاعات منتشر شده بر روی وب سايت را نيز برعهده خواهند داشت .
• در صورتی كه محتويات صفحات بندرت تغيير می يابد ، می توان از روش درج مستقيم متن درون صفحات وب به صورت دستی استفاده نمود . ولی در صورتی كه محتويات يك صفحه بطور مرتب و با فركانس بالا تغيير می يابد ، بهتر است كه آنان را در يك فايل و يا منبع داده خارجی ذخيره نمود . در چنين مواردی ، امكان بهنگام سازی محتويات با سهولت بيشتری فراهم می گردد . صرفنظر از اندازه و پيچيدگی يك وب سايت ، يكی از وظايف اوليه پياده كننده گان برنامه های وب ، مديريت داده ها با استفاده از كنترل های سرويس دهنده و اسكريپت هائی است كه با تلفيق آنان می توان اطلاعات را به صورت پويا و متاثر از آخرين داده های موجود در بانك اطلاعاتی بر روی صفحات وب نمايش داد .
در بخش دوم به بررسی امكانات ارائه شده در ASP كلاسيك ، ASP.NET 1.x و ASP.NET 2.0 به منظور دستيابی و نمايش داده خواهيم پرداخت تا مسير ما برای بررسی كنترل های منبع داده هموار گردد .
امكانات مورد نياز به منظور دستيابی و نمايش داده
پياده كنندگان نرم افزار با توجه به نوع پلت فرم ، از مكانيزم های خاصی به منظور انجام هر يك از مراحل فوق استفاده می نمايند :
• دستيابی داده : در اين رابطه لازم است كه از مكانيزم و يا مكانيزم هائی به منظور ايجاد ارتباط با بانك اطلاعاتی ، اجرای يك query و ذخيره مجموعه ركورد برگردانده شده در يك ساختمان داده خاص، استفاده گردد.
• نمايش داده : در اين رابطه لازم است كه از مكانيزم و يا مكانيزم هائی خاص به منظور نمايش داده بازيابی شده با فرمت دلخواه در صفحات وب استفاده گردد .
در زمان دستيابی و نمايش داده همواره با دو پرسش اساسی مواجه شويم : اول اين كه پلت فرم استفاده شده چه نوع امكانات و تسهيلاتی را به منظور دستيابی داده در اختيار پياده كنندگان قرار می دهد ؟ دوم اين كه برای نمايش داده در صفحات وب ، پلت فرم مورد نظر چه نوع تسهيلاتی را ارائه می نمايد تا پياده كنندگان بتوانند با صرف كمترين وقت اقدام به توليد صفحاتی نمايند كه محتويات درون آنان متاثر از داده های موجود در بانك های اطلاعاتی باشد؟
اجازه دهيد پاسخ به دو پرسش فوق را با بررسی سه محيط متفاوت ASP كلاسيك ، ASP.NET 1.x و ASP.NET 2.0 انجام دهيم .
ASP كلاسيك
دستيابی داده
• مرحله اول : ايجاد يك ارتباط با بانك اطلاعاتی
• مرحله دوم : مشخص نمودن provider و مسير فيزيكی ذخيره بانك اطلاعاتی
• مرحله سوم : ايجاد يك Recordset
• مرحله چهارم : تعريف يك query
• مرحله پنجم : باز كردن بانك اطلاعاتی با توجه به ارتباط ايجاد شده و اجرای query مورد نظر
• مرحله ششم : بازيابی ركوردها و ذخيره آنان در يك recordset
نمايش داده
مثلا" برای نمايش نتايج برگردانده شده در اثر اجرای يك query ، پياده كنندگان مجبور بودند كه در ابتدا داده را بازيابی نموده و در ادامه با استفاده از تگ <Tabel> يك جدول را ايجاد و به موازات حركت در بين ركوردهای برگردانده شده و از طريق يك حلقه تكرار ، هر يك از ركوردها را به عنوان يك سطر جديد به جدول اضافه نمايند . برای افزودن يك سطر جديد ، در ابتدا با استفاده از يك تگ <tr> يك سطر جديد ايجاد و در ادامه برای هر يك از فيلدهای موجود در جدول بانك اطلاعاتی كه اطلاعات مرتبط با آنان بازيابی شده است يك ستون به كمك تگ <td> ايجاد و در نهايت پس از نمايش تمامی ركوردهای موجود درrecordset ، انتهای جدول با استفاده از تگ < table /> مشخص می گردد .
نمايش داده در ASP كلاسيك مستلزم انجام مراحل زير است :
• مرحله اول : ايجاد يك جدول به همراه عناوين ستون ها در خارج از حلقه تكرار
• مرحله دوم : ايجاد يك حلقه تكرار كه شرط خاتمه آن رسيدن به انتهای ركوردهای موجود در Recordset است .
• مرحله سوم : ايجاد يك سطر در حلقه تكرار كه شرايط نمايش يك ركورد را فراهم نمايد .
• مرحله چهارم : ايجاد ستون های مورد نظر در هر سطر و نمايش فيلدهای داده بازيابی شده موجود در Recordset
• مرحله پنچم: حركت اشاره گر به ركوردهای موجود در recordset به سمت جلو
• مرحله ششم : غيرفعال كردن اتصال ايجاد شده با بانك اطلاعاتی
• مرحله هفتم : بستن جدول پس از اتمام حلقه تكرار
كد زير نحوه انجام عمليات فوق ( دستيابی و نمايش داده) در ASP كلاسيك را نشان می دهد :
نحوه دستيابی |
<% |
نحوه نمايش |
|
در ASP كلاسيك ما در دو بخش دستيابی و نمايش دچار كمبود امكانات بالقوه می باشيم و پياده كنندگان مجبور به نوشتن كد لازم به منظور انجام هر يك از عمليات دستيابی و نمايش داده می باشند .
دنيای پويای برنامه نويسی همواره اين وضعيت را داشته است و در ابتدا پايه يك چيز بر اساس امكانات موجود در زمان خود ايجاد می گردد و در ادامه با پيشرفت در فن آوری ها ، امكانات و پتانسيل های جديدی در اختيار پياده كنندگان قرار می گيرد با اين اميد كه بتوان يك نرم افزار را در زمانی معقول و هزينه ای منطقی پياده سازی نمود . برنامه های وب نيز از اين قاعده مستثنی نبوده و تمامی پياده كنندگانی كه از ASP كلاسيك به منظور پياده سازی برنامه های وب استفاده می كردند ، در انتظار يك تحول بزرگ بودند ، تحولی كه با ارائه ASP.NET 1.x شروع گرديد .
ASP.NET 1.x
همانگونه كه اشاره گرديد ، در ASP كلاسيك به منظور نمايش اطلاعات بازيابی شده از بانك های اطلاعاتی و ساير منابع داده ، پياده كنندگان مجبور بودند كد لازم برای بازيابی و حركت بين ركوردهای بازيابی شده را نوشته و پس از تعريف يك فرمت مناسب ، محتويات مورد نظر را كه شامل اطلاعات بازيابی شده و تگ های Html است ، بر اساس يك ساختار خاص تعريف شده توسط پياده كننده در صفحات وب نمايش دهند . بدين منظور كنترل های سرويس دهنده خاصی كه از آنان با نام كنترل های نمايش اطلاعات و يا كنترل های داده وب نام برده می شود، ايجاد گرديد . پياده كننده گان با استفاده از كنترل های فوق قادر به نمايش اطلاعات بازيابی شده از منابع داده در صفحات وب بودند . كنترل های DataGrid,DataList,Repeater و يا حتی DropDownList نمونه هائی از ساختارهای نمايش اطلاعات می باشند كه استفاده از آنان مستلزم نوشتن كد زيادی نمی باشد و با حداقل كد لازم می توان آنان را آماده نمايش اطلاعات مرتبط با يك منبع داده نمود . به عنوان نمونه ، پياده كنندگان با استفاده از يك كنترل سرويس دهنده نمايش اطلاعات نظير DataGrid لازم نبود كه خود را درگير تگ های Html به منظور ايجاد يك جدول نمايند .
همانگونه كه اشاره گرديد ، يكی از مهمترين تغييرات ASP.NET 1.x نسبت به نسخه قبلی خود يعنی ASP ، ارائه كنترل های سرويس دهنده نمايش اطلاعات است كه اين امكان را در اختيار پياده كنندگان قرار می دهد تا با نوشتن حداقل كد لازم بتوانند داده مورد نظر را از هر نوع منبع داده بازيابی و با فرمت دلخواه و بهره گيری از پتانسيل های تگ های Html بر روی صفحات وب نمايش دهند . رويكرد فوق دو دستاورد مهم را برای پياده كنندگان به دنبال داشت :
• با توجه به اين كه به منظور نمايش اطلاعات بر روی صفحات وب به كد اندكی نياز می باشد ، در وقت پياده كنندگان صرفه جوئی می گردد.
• به مهارت اندكی به منظور نمايش اطلاعات برروی صفحات وب نياز می باشد .
در ASP.NET 1.x كنترل های سرويس دهنده نمايش اطلاعات و يا كنترل های داده وب ، يك الگوی مناسب به منظور نمايش داده را ارائه می نمايند كه به نحوه تفسير و نمايش داده در هر يك از كنترل های سرويس دهنده نمايش اطلاعات وابسته نخواهد بود . مثلا" داده موجود در DataGrid در يك ساختار مشابه جدول متشكل از مجموعه ای سطر و ستون و يا در يك كنترل DropDownList نمايش داده می شود . نحوه نسبت دهی داده به دو كنترل فوق مشابه می باشد و می بايست خصلت DataSource آنان به درستی مقداردهی شود و با استفاده از متد DataBind عمليات نسبت دهی داده به كنترل مربوطه انجام شود .
دستيابی داده
• مرحله اول : ايجاد يك ارتباط با بانك اطلاعاتی و فعال نمودن آن
• مرحله دوم : تعريف يك query
• مرحله سوم : ايجاد يك recordset
• مرحله چهارم : نسبت دادن recordset به كنترل سرويس دهنده استفاده شده برای نمايش اطلاعات
• غيرفعال كردن ارتباط ايجاد شده با بانك اطلاعاتی و بستن recordset
نمايش داده
• تعريف يك كنترل سرويس دهنده نمايش اطلاعات و يا داده وب در بخش Html يك صفحه aspx .
• اختصاص يك شناسه خاص به آن كه از طريق خصلت id انجام می شود .
• نسبت دادن recordset بازيابی شده به خصلت DataSource كنترل در بخش Script يك صفحه aspx .
• استفاده از متد DataBind كنترل سرويس دهنده نمايش اطلاعات به منظور انتشار داده بازيابی شده در كنترل از طريق بخش Script يك صفحه aspx .
كد زير نحوه انجام عمليات فوق ( دستيابی و نمايش داده) در ASP,NET 1.x را نشان می دهد :
<%@ Import Namespace="System.Data.OleDb" %>
DBConnection = New OleDbConnection( _
SQLString = "SELECT * FROM Students"
DBReader = DBCommand.ExecuteReader()
MyDataGrid.DataSource = DBReader
DBReader.Close()
|
با اين كه اكثر محتويات صفحات وب از تركيب اطلاعات ثابت با Html و يا پردازش بر روی داده های ورودی توسط كاربر تامين می گردد ولی در اكثر وب سايت های مدرن، اطلاعات از منابع ذخيره سازی داده نظير بانك های اطلاعاتی ، فايل های متنی ، XML و ساير منابع ذخيره سازی استخراج و نمايش داده می شود .
بانك های اطلاعاتی ، معمولا" به عنوان اولين منبع ذخيره سازی داده برای ارائه اطلاعات در صفحات وب مطرح می باشند . در ASP.NET 2.0 ، امكانات متعددی به منظور تسهيل در امر دستيابی و نمايش داده بر روی صفحات وب ارائه شده است . معرفی كنترل های جديد منبع داده، نمونه ای در اين زمينه می باشد .
در نسخه های قبل از ASP.NET 2.0 ، دستيابی به بانك های اطلاعاتی مستلزم انجام يك فرآيند خاص شامل بازنمودن بانك اطلاعاتی ، بازيابی ركوردها ، ايجاد يك ساختار تكرار به منظور حركت بين ركوردهای بازيابی شده ، انجام عمليات مورد نياز و در نهايت بستن ارتباط ايجاد شده با بانك اطلاعاتی است . در ASP.NET 2.0 تمامی عمليات فوق در كنترل هائی كه مختص اين كار طراحی شده اند ، كپسوله شده است .
ماهيت و دستاورد كنترل های منبع داده
كنترل های منبع داده ، يك روش تعريفی به منظور كار با داده را در مقابل نوشتن كد به منظور اتصال به بانك اطلاعاتی ، اجرای يك دستور ، بازيابی نتايج و ذخيره آنان در يك ساختمان داده مناسب نظير DataReader و يا DataSet فراهم می نمايند . عمليات فوق با استفاده از كنترل های منبع داده به صورت اتوماتيك و نوشتن حداقل كد لازم انجام خواهد شد . ( توجه داشته باشيد كه در برخی موارد لازم است ، همچنان كد لازم به منظور دستيابی داده نوشته گردد) . پس از پيكربندی مناسب يك كنترل منبع داده ، می توان آن را به هر نوع كنترل سرويس دهنده نمايش اطلاعات نسبت داد . زمانی كه يك صفحه ASP.NET حاوی يك كنترل منبع داده و نمايش اطلاعات است، كنترل سرويس دهنده نمايش اطلاعات به صورت اتوماتيك كنترل منبع داده مرتبط با خود را فراخوانده و پس از بازيابی داده آنان را نمايش می دهد .
كنترل های منبع داده در ASP.NET 2.0 بدين منظور معرفی شده اند كه مزايای نمايش داده در صفحات وب را به دستيابی داده نيز تعميم داده تا پياده كنندگان بتوانند علاوه بر استفاده از پتانسيل های موجود به منظور نمايش داده از امكانات بالقوه ای برای دستيابی داده نيز استفاده نمايند . با استفاده از كنترل های منبع داده ، پياده كنندگان می توانند با نوشتن حداقل كد به منابع داده دستيابی داشته باشند . بدين ترتيب ، حجم كد مورد نياز به منظور دستيابی و نمايش داده در صفحات وب كاهش می يابد (در مقايسه با ASP.NET 1.x) .
در ASP.NET 2.0 ، پنج كنترل منبع داده متفاوت ارائه شده است كه هر يك به منظور دستيابی به يك نوع خاص منبع داده طراحی شده اند . به عنوان نمونه ، كنترل منبع داده SqlDataSource به منظور دستيابی داده از يك بانك اطلاعاتی رابطه ای و كنترل منبع داده XmlDataSource به منظور دستيابی و كار با يك فايل Xml ارائه شده اند .
صرفنظر از نوع منبع داده ، آنان با استفاده از يك روش مشابه به كنترل های سرويس دهنده نمايش اطلاعات و يا كنترل های داده وب مرتبط می گردند . بدين ترتيب ، دانش لازم به منظور كار با داده موجود در منابع داده متفاوت كاهش می يابد و پياده كنندگان برای اتصال به يك بانك اطلاعاتی SQL Server و يا دستيابی و فيلترينگ محتويات يك فايل Xml از روش هائی مشابه و مستقل از نوع منبع داده استفاده می نمايند .
كنترل های منبع داده اين امكان را در اختيار پياده كنندگان صفحات قرار می دهند كه بتوانند برنامه های وب با محوريت دستيابی به داده را بدون نياز به جزئيات كار پياده سازی نمايند .
توجه داشته باشيد كه همچنان می توان به منظور دستيابی و تغيير داده در برنامه های وب نوشته شده با استفاده از ASP.NET 2.0 از روش های موجود در ASP.NET 1.x استفاده نمود . مثلا" می توان همچنان از كلاس های SqlConnection ، SqlCommand و SqlDataReader به منظور دستيابی داده استفاده نمود و با توجه به نتايج بدست آمده آنان را به يك كنترل سرويس دهنده نمايش اطلاعات با استفاده از خصلت DataSource نسبت داد .
مهمترين مزيت كنترل های منبع داده ، ارائه يك روش تعريفی به منظور كار با داده است .
نسبت دهی يك كنترل منبع داده به يك كنترل سرويس دهنده نمايش اطلاعات
از آنجائی كه كنترل های منبع داده ، كنترل هائی تعريفی می باشند ( نظير ساير كنترل های سرويس دهنده ASP.NET ، همانند Label,TextBox,Button و...) ، می توان آنان را به سادگی به هر يك از صفحات وب مورد نياز اضافه نمود .پس از استقرار آنان در صفحات ، در ادامه می توان پيكربندی آنان را بگونه ای انجام داد تا امكان دستيابی آنان به منبع داده مورد نظر فراهم گردد . به منظور انجام اين كار می بايست به خصلت DataSourceID كنترل سرويس دهنده نمايش اطلاعات ، مقدار Id كنترل منبع داده نسبت داده شود . توجه داشته باشيد كه كنترل هائی كه از كلاس BaseDataBoundControl مشتق می شوند، دارای خصلت DataSourceID می باشند ( نظير كنترل های AdRotator, BulletedList, CheckBoxList, DropDownList, ListBox, RadioButtonList, DetailsView, FormView, GridView, Menu و TreeView ).
پس از اين كه خصلت DataSourceID به يك كنترل منبع داده نسبت داده شد ، وظيفه شما به عنوان پياده كننده صفحات وب انجام شده است . در حين چرخه حيات صفحه ، كنترل سرويس دهنده نمايش اطلاعات و ساير كنترل های موجود ، داده مورد نياز خود را از منبع داده مرتبط شده با خود درخواست می نمايند. مثلا" زمانی كه داده در يك كنترل GridView ( گزينه جايگزين با DataGrid در ASP.NET 2.0 ) با استفاده از يك كنترل منبع داده نظير SqlDataSource نمايش داده می شود ، كنترل GridView متد GetView كنترل SqlDataSource را فراخوانده تا با توجه به مقادير نسبت داده شده به هر يك از خصلت های كنترل SqlDataSource ، به داده مورد نظر دستيابی و امكان بازيابی آنان فراهم گردد . داده بازيابی شده در ادامه در Gridview قرار گرفته و به منظور نمايش در مرورگر سرويس گيرندگان با آن به عنوان يك جدول Html برخورد خواهد شد .
كنترل های منبع داده ، پياده كنندگان را قادر می سازند كه بدون نياز به كد به داده دستيابی داشته باشند ( همانند كنترل های سرويس دهنده نمايش اطلاعات كه اين امكان را در اختيار پياده كنندگان قرار می دهند تا بدون نياز به كد داده را نمايش دهند) .
دستيابی داده
فرمت تعريف يك AccessDataSource |
<asp:AccessDataSourceid="string" Runat="Server" |
مثال : در نمونه كد زير به بانك اطلاعاتی TestDb.mdb متصل و از جدول products آن فيلدهای مورد نياز بازيابی شده است .
دستيابی به يك بانك اطلاعاتی نمونه |
<asp:AccessDataSource id="ProductsSource" Runat="Server" |
نمايش داده
كنترل فوق ، دارای پتانسيل لازم به منظور همكاری عملياتی با كنترل های منبع داده است، بنابراين با حداقل كد ممكن می توان اطلاعات موجود در بانك اطلاعاتی را استخراج و در يك ساختار نمايشی نظير Gridview نمايش داد . Gridview ، اطلاعات استخراج شده از يك بانك اطلاعاتی را به صورت يك جدول حاوی سطرها وستون هائی نمايش می دهد .برای نسبت دادن كنترل به يك منبع داده از خصلت DataSourceID استفاده می گردد .بدين منظور، لازم است كه id كنترل منبع داده به خصلت فوق نسبت داده شود . GridView به صورت پيش فرض و اتوماتيك ، ستون هائی را متناسب با تعداد فيلدهای موجود در جدول بانك اطلاعاتی ايجاد می نمايد . تعداد سطرهای موجود در جدول نيز معادل تعداد ركوردهای بازيابی شده از بانك اطلاعاتی است .
شكل عمومی اين كنترل به صورت زير است :
فرمت تعريف يك Gridview |
<asp:GridViewid="value" Runat="Server" |
نمايش اطلاعات بازيابیشده از يك منبع داده |
<asp:GridViewid="ProductGrid" DataSourceID="Products" Runat="Server" /> |
توجه داشته باشيد كه در اين مقاله قصد تشريح عملكرد كنترل asp:AccessDastSource و يا GridView را نداريم و هدف نشان دادن نحوه دستيابی و نمايش داده در ASP.NET 2.0 است .
مثال : در نمونه برنامه زير به يانك اطلاعاتی TestDb.mdb با استفاده از يك كنترل منبع داده متصل و داده بازيابی شده با استفاده از يك كنترل Gridview نمايش داده شده است .
دستيابی |
<Form runAt="Server"> |
نمايش |
<asp:GridView id="ProductsGrid" DataSourceID="Products" Runat="Server" |