نمایش نتایج: از شماره 1 تا 3 , از مجموع 3

موضوع: كنترل های منبع داده در asp.net 2.0 ( بخش اول )

  1. #1
    کاربر اخراج شده
    تاریخ عضویت
    2009/07/17
    سن
    25
    نوشته ها
    1,705

    پیش فرض كنترل های منبع داده در asp.net 2.0 ( بخش اول )

    كنترل های منبع داده در ASP.NET 2.0 ( بخش اول )
    يكی از مهمترين اهداف پياده سازی صفحات وب ، ارائه اطلاعات مورد نياز كاربران با توجه به اهداف عملياتی يك وب سايت ( سرويس های شخصی و يا عمومی ) است . شايد به همين دليل باشد كه يكی از چالش های مهم در خصوص طراحی صفحات ، ايجاد صفحاتی است كه حاوی جديدترين و در عين حال صحيح ترين اطلاعات باشند .
    برای نمايش اطلاعات بر روی صفحات وب از چهار روش و يا منبع اساسی استفاده می گردد :

    • درج محتويات ثابت به صورت دستی در بطن صفحات : در اين روش محتويات مورد نظر مستقيما" و به صورت دستی در بطن يك صفحه وب قرار داده می شود. برای تعريف يك ساختار نمايشی مناسب از تگ های Html استفاده می گردد . به منظور توليد صفحات، می توان از ابزارهای توليد مختلفی نظير FrontPage و يا حتی يك اديتور ساده متنی استفاده نمود .
    • توليد محتويات با استفاده از اسكريپت های سمت سرويس گيرنده يا سرويس دهنده : در اين روش به صورت اتوماتيك ، مجموعه ای از اسكريپت های سمت سرويس دهنده و يا سرويس گيرنده اجراء و اطلاعات مورد نياز به منظور نمايش در صفحات وب را توليد می نمايند . اطلاعات ممكن است به صورت ثابت و يا با بكارگيری مجموعه ای از توابع تعبيه شده در يك زبان برنامه نويسی و يا اشياء سمت سرويس دهنده، توليد گردند.
    • پردازش بر روی داده های ورودی : در اين روش با پردازش بر روی داده ورودی ، اطلاعات مورد نياز به منظور نمايش بر روی صفحات وب توليد می گردد . در واقع ، بر روی داده های خام پردازش مورد نياز توسط اسكريپت ها انجام تا اطلاعات جديدی برای نمايش بر روی صفحات وب توليد گردد .
    • بازيابی و پردازش اطلاعات از منابع داده خارجی : در اين روش اطلاعات از منابع داده خارجی استخراج ( بازيابی ) و بر روی صفحات وب نمايش داده می شود . اطلاعات شخصی ، سازمانی و ... در منابع ذخيره سازی عمومی ذخيره و پس از بازيابی و در صورت لزوم انجام پردازش های مورد نياز بر روی صفحات وب نمايش داده می شوند .

    هدف اصلی صفحات ASP.NET كاهش و يا حذف فرآيند درج دستی اطلاعات درون صفحات وب است . با تركيب محتويات مورد نياز به منظور نمايش در صفحات وب با تگ های Html ، نگهداری ، پشتيبانی و بهنگام سازی صفحات وب برای پياده كنندگان مشكل می گردد . بهنگام سازی و ويرايش محتويات صفحات وب به صورت دستی ، علاوه بر اين كه توجيه زمانی ندارد ،‌ مشكلات خاص خود را برای پياده كنندگان صفحات وب نيز به دنبال خواهد داشت .
    بهترين گزينه به منظور نگهداری اطلاعات ، جداسازی آنان از صفحاتی است كه قرار است آنان را نمايش دهند . در چنين مواردی صرفا" در صفحات وب ، مكان و فرمت نمايش اطلاعات مشخص می گردد و اطلاعات در مكانی متمايز از صفحات وب نگهداری می گردند . پس از درخواست يك صفحه ، اطلاعات از منابع داده بازيابی و در محل تعيين شده برروی صفحات وب قرار خواهند گرفت . در واقع ، صفحات بطور اتوماتيك و پويا در زمان درخواست ايجاد و شامل آخرين اطلاعاتی می باشند كه بصورت بلادرنگ و Live از منابع داده خارجی استخراج شده اند .
    در ادامه به بررسی چهار روش فوق خواهيم پرداخت تا از اين رهگذر جايگاه كنترل های منبع داده ارائه شده در ASP.NET 2.0 مشخص و با اين نوع كنترل ها از دو بعد مفاهيم و عمليات آشنا شويم .

    روش اول : درج محتويات ثابت به صورت دستی در بطن صفحات
    روش استاندارد به منظور ارائه اطلاعات درون صفحات وب ، درج مستقيم و دستی آنان درون صفحات وبی است كه فرمت و قالب نمايش آنان توسط تگ های html مشخص شده است .
    مثال : در مثال زير اطلاعات به صورت دستی در يك صفحه وب درج و از تگ های Html به منظور تعريف فرمت نمايش آنان استفاده شده است .

    <html>
    <body>
    <h3> درج محتويات ثابت به صورت دستی </h3>
    <p>


    برای ايجاد اين صفحه ، اطلاعات مورد نياز بطور مستقيم و به صورت دستی درون صفحه قرار داده شده اند .
    برای تعريف مجموعه قوانين لازم به منظور نحوه نمايش اطلاعات از تگ های Html استفاده شده است . در زمانی كه لازم است محتويات اين صفحه تغيير يابد ، می بايست صفحه را به صورت دستی ويرايش تا متناسب با آن اطلاعات جديد نمايش داده شوند .

    </p>
    </body>
    </html>


    روش دوم : توليد محتويات با استفاده از اسكريپت های سمت سرويس گيرنده يا سرويس دهنده
    در اين روش ، اطلاعاتی كه قرار است درون صفحات نمايش داده شوند ، توسط اسكريپت هائی كه قادر به توليد محتويات ثابت و يا متغير و پويا می باشند ، ايجاد می گردد. به منظور توليد و نمايش اطلاعات در زمان نمايش صفحات وب ، می توان با توجه به جايگاه روتين Page_Laod از آن استفاده و پس از توليد اطلاعات توسط اسكريپت ، آنان را با اطلاعات ثابت تركيب و در نهايت بر روی صفحات وب نمايش داد . در چنين مواردی می توان فرآيند توليد و در نهايت نمايش اطلاعات را به خواسته های كاربران وابسته نمود تا در ادامه متناسب با خواسته آنان روتين های مورد نظر فعال و از طريق اسكريپت های موجود در آنان ، اطلاعات مورد نياز توليد گردد.
    مثال : در مثال زير ، اسكريپت موجود در روتين Page_Load اجراء و پس از توليد اطلاعات مورد نياز ، با استفاده از تگ های Html نحوه نمايش آنان بر روی صفحه وب مشخص می گردد . در مثال فوق از تابع Date ويژوال بيسيك و كنترل های سرويس دهنده خروجی استفاده شده است .
    پس از توليد اطلاعات توسط اسكريپت ، به منظور نمايش آنان در صفحه از كنترل سرويس دهنده خروجی <asp:Label> استفاده شده است . به كنترل فوق يك مشخصه ( id ) نسبت داده شده است تا امكان دستيابی به آن از طريق اسكريپت های سمت سرويس دهنده موجود در روتين Page_Load فراهم گردد. اسكريپت فوق يك رشته از كاراكترهای متنی و Html را به خصلت Text كنترل label و با نام Paragraph نسبت می دهد. توجه داشته باشيد كه در اين مثال از هيچگونه تگ Html بطور مستقيم استفاده نشده است .

    <SCRIPT Runat="Server">

    Sub Page_Load

    Heading.Text = "<h3>توليد خروجی با استفاده از اسكريپت</h3>"

    Paragraph.Text = "<p>امروز, <span style=""color:red"">" & _
    Format(DateString, "Long Date") & "</span>, " & _
    "اين خروجی توسط اسكريپت توليد شده است " & _
    "پس از توليد اطلاعات‌ ، ماحصل آن در يك كنترل سرويس دهنده خروجی ، " & _
    " نوشته می گردد . تاريخ نمايش داده شده ، همواره بهنگام بوده و " & _
    " ضرورتی به ويرايش صفحه وجود ندارد " & _
    " </p>"

    End Sub

    </SCRIPT>


    <html>
    <body>
    <form Runat="Server">

    <asp:Label id="Heading" Runat="Server"/>
    <asp:Label id="Paragraph" Runat="Server"/>

    </form>
    </body>
    </html>

    روش سوم : پردازش بر روی داده های ورودی
    در اين روش ، اطلاعات اوليه توسط كاربر ارائه و در ادامه از آنان به منظور توليد خروجی استفاده می گردد . در نهايت اطلاعات توليد شده با استفاده از كنترل ها‍ ی سرويس دهنده خروجی بر روی صفحه وب نمايش داده می شود .
    مثال : در مثال زير ، يك كنترل TextBox در اختيار كاربر قرار داده شده است تا داده مورد نظر را وارد نمايد . پس از درج داده توسط كاربر و كليك بر روی دكمه "Submit" ، روتين مربوطه فعال و پس از انجام عمليات مورد نظر ، نتايج به همراه تگ های Html در يك كنترل خروجی label نوشته می گردند .در اين مثال از سه كنترل سرويس دهنده استفاده شده است :


    • يك كنترل asp:Textbox جهت درج داده توسط كاربر
    • يك كنترل asp:Button جهت فراخوانی روتين مربوطه
    • يك كنترل asp:label جهت تعريف يك ناحيه خروجی به منظور نمايش اطلاعات توليد شده

    پس از كليك بر روی دكمه مربوطه ، داده ورودی توسط كاربر در عدد هفت ضرب و حاصل با متن ثابت و تگ های Html تركيب و در ناحيه خروجی مشخص شده توسط كنترل label نمايش داده می شود . عمليات فوق توسط روتين MultiPly_Seven انجام می شود . توجه داشته باشيد كه در اين مثال تمام خروجی توسط اسكريپت توليد شده است .

    <SCRIPT Runat="Server">

    Sub Multiply_Seven(Src As Object, Args As EventArgs)

    If number1.Text <> "" Then
    Dim M As Integer
    M = number1.Text * 7
    Show_Number.Text = "Your Number is <b>" & M &
    End If

    End Sub

    </SCRIPT>


    <html>
    <body>
    <form Runat="Server">

    <h3>خروجی توليد شده توسط اسكريپت با استفاده از داده ورودی</h3>

    Enter your age:
    <asp:TextBox id="number1" Size="5" Runat="Server"/>
    <asp:Button Text="Submit" OnClick="Multiply_Seven" Runat="Server"/>
    <asp:Label id="Show_Number" Runat="Server"/>

    </form>
    </body>
    </html>


    روش چهارم : بازيابی و پردازش داده از طريق منابع داده خارجی
    در اكثر وب سايت ها اطلاعات به صورت مستقيم درون صفحات وب درج نمی گردد و يا ماحصل دريافت و پردازش بر روی داده كاربر نمی باشد . در اينگونه سايت ها ، از فايل های خارجی و يا بانك های اطلاعاتی به عنوان منبع اوليه تامين داده استفاده می گردد .پس از درخواست يك صفحه وب ، اطلاعات از منابع داده خارجی استخراج و قبل از اين كه برای مرورگر ارسال گردند در مكان تعيين شده در صفحات وب قرار می گيرند. اطلاعات نمايش داده شده بر روی صفحات وب همواره بهنگام می باشد چراكه محتويات اينگونه صفحات به صورت پويا و با بهره گيری از منابع اطلاعاتی خارجی ايجاد می گردد .
    مثال : در اين مثال از اطلاعات موجود در جدول Products مربوط به بانك اطلاعاتی TestDb.mdb به منظور نمايش اطلاعات بر روی صفحه وب استفاده شده است .
    تمامی پردازش های سمت سرويس دهنده از طريق دو كنترل سرويس دهنده موجود بر روی صفحه انجام می شود :


    • asp:GridView ، يك كنترل نمايش اطلاعات است و به يك منبع داده خارجی مرتبط می گردد . كنترل فوق در نهايت به صورت اتوماتيك اطلاعات بازيابی شده را در قالب يك جدول ( حاوی سطرها و ستون ها) ، نمايش خواهد داد .
    • كنترل asp:AccessDataSource ، اطلاعات را از بانك اطلاعاتی استخراج می نمايد . ارتباط كنترل فوق با GridView از طريق خصلت DataSourceID برقرار شده است . اطلاعات بازيابی شده در فرمتی كه توسط GridView مشخص شده است ، نمايش داده خواهند شد . Style خاصی در ارتباط با جدول بكار گرفته نشده است . كنترل GridView دارای مجموعه ای كامل از گزينه های لازم به منظور تعيين لی اوت و يا style جدول نمايش اطلاعات است . كنترل های ورودی داده متفاوتی را می توان به صفحه اضافه نمود تا كاربران قادر به انتخاب اطلاعات مورد نظر خود باشند ( بازيابی و نمايش اطلاعات در كنترل های خروجی بر اساس خواسته كاربر)

    <html>
    <body>
    <form Runat="Server">
    <h3>خروجی توليد شده با استفاده از بانك اطلاعاتی</h3>
    <asp:AccessDataSource id="Products" Runat="Server"
    DataFile="c:\databases\TestDb.mdb"
    SelectCommand="SELECT ItemNumber, ItemName, ItemPrice, ItemQuantity FROM Products"/>
    <asp:GridView id="ProductsGrid" DataSourceID="Products" Runat="Server"/>
    </form>
    </body>
    </html>

    مزايای جداسازی محتويات از صفحه ای كه آنان را نمايش می دهد :

    • اطلاعات همواره به روز و صحيح می باشند .
    • در اكثر سايت های تجاری ، اغلب اطلاعات در يك بانك اطلاعاتی ذخيره می گردد. از بانك اطلاعاتی به عنوان مخزن تامين اطلاعات مورد نياز برای انجام عمليات و مديريت فرآيندها استفاده می گردد . در چنين مواردی ، صفحات وب بهنگام و به سرعت آخرين اطلاعات موجود را نمايش خواهند داد ( صفحات وب Live ) . استخراج داده از اينگونه منابع ذخيره سازی ، در زمان صدور درخواست انجام می شود .
    • صفحات وب بندرت نيازمند تغيير بوده و كد صفحات در زمان تغيير محتويات تغيير نخواهد كرد . در اين مدل ، اطلاعات درمنابع ذخيره سازی داده تغيير داده شده و ماحصل آن بر روی صفحات وب منعكس خواهد شد . در چنين مواردی نيازی به كاركنان فنی به منظور نگهداری و بهنگام سازی اطلاعات نخواهد بود . در واقع، افرادی كه از منابع ذخيره سازی داده نگهداری می نمايند ، نگهداری اطلاعات منتشر شده بر روی وب سايت را نيز برعهده خواهند داشت .
    • در صورتی كه محتويات صفحات بندرت تغيير می يابد ، می توان از روش درج مستقيم متن درون صفحات وب به صورت دستی استفاده نمود . ولی در صورتی كه محتويات يك صفحه بطور مرتب و با فركانس بالا تغيير می يابد ، بهتر است كه آنان را در يك فايل و يا منبع داده خارجی ذخيره نمود . در چنين مواردی ، امكان بهنگام سازی محتويات با سهولت بيشتری فراهم می گردد .


    صرفنظر از اندازه و پيچيدگی يك وب سايت ، يكی از وظايف اوليه پياده كننده گان برنامه های وب ، مديريت داده ها با استفاده از كنترل های سرويس دهنده و اسكريپت هائی است كه با تلفيق آنان می توان اطلاعات را به صورت پويا و متاثر از آخرين داده های موجود در بانك اطلاعاتی بر روی صفحات وب نمايش داد .
    در بخش دوم به بررسی امكانات ارائه شده در ASP كلاسيك ، ASP.NET 1.x و ASP.NET 2.0 به منظور دستيابی و نمايش داده خواهيم پرداخت تا مسير ما برای بررسی كنترل های منبع داده هموار گردد .

  2. #2
    کاربر اخراج شده
    تاریخ عضویت
    2009/07/17
    سن
    25
    نوشته ها
    1,705

    پیش فرض كنترل های منبع داده در asp.net 2.0 ( بخش دوم )

    كنترل های منبع داده در ASP.NET 2.0 ( بخش دوم )
    مديريت وب
    7134
    2
    5

    كنترل های منبع داده در ASP.NET 2.0 ( بخش دوم )
    همانگونه كه در بخش اول اشاره گرديد ، برای نمايش اطلاعات بر روی صفحات وب از چهار روش و يا منبع اساسی استفاده می گردد . بازيابی و نمايش ( و يا بازيابی ، پردازش و نمايش ) داده های موجود در منابع خارجی نظير بانك های اطلاعاتی يكی از متداولترين روش های نمايش اطلاعات بر روی صفحات وب است .
    در اين بخش به بررسی امكانات ASP كلاسيك ، ASP.NET 1.x و ASP.NET 2.0 به منظور دستيابی و نمايش داده خواهيم پرداخت تا مسير ما برای بررسی كنترل های منبع داده هموار گردد .

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


    • دستيابی داده : در اين رابطه لازم است كه از مكانيزم و يا مكانيزم هائی به منظور ايجاد ارتباط با بانك اطلاعاتی ، اجرای يك query و ذخيره مجموعه ركورد برگردانده شده در يك ساختمان داده خاص،‌ استفاده گردد.
    • نمايش داده : در اين رابطه لازم است كه از مكانيزم و يا مكانيزم هائی خاص به منظور نمايش داده بازيابی شده با فرمت دلخواه در صفحات وب استفاده گردد .

    در زمان دستيابی و نمايش داده همواره با دو پرسش اساسی مواجه شويم : اول اين كه پلت فرم استفاده شده چه نوع امكانات و تسهيلاتی را به منظور دستيابی داده در اختيار پياده كنندگان قرار می دهد ؟ دوم اين كه برای نمايش داده در صفحات وب ، پلت فرم مورد نظر چه نوع تسهيلاتی را ارائه می نمايد تا پياده كنندگان بتوانند با صرف كمترين وقت اقدام به توليد صفحاتی نمايند كه محتويات درون آنان متاثر از داده های موجود در بانك های اطلاعاتی باشد؟
    اجازه دهيد پاسخ به دو پرسش فوق را با بررسی سه محيط متفاوت ASP كلاسيك ، ASP.NET 1.x و ASP.NET 2.0 انجام دهيم .

    ASP كلاسيك
    پياده كنندگانی كه از فن آوری ASP در گذشته ای نه چندان دور به منظور پياده سازی برنامه های وب با محوريت دستيابی داده استفاده می كردند ، مجبور بودند برای دستيابی و نمايش داده ، اقدام به نوشتن كدهای مورد نياز نمايند .

    دستيابی‌ داده
    گرچه به منظور دستيابی به داده در ASP كلاسيك از اشياء متفاوتی كه به جملگی آنان ADO ( برگرفته از ActiveX Data Object ) گفته می شود ، استفاده می گرديد ولی پياده كنندگان می بايست تمامی مراحل ايجاد ارتباط با بانك اطلاعاتی تا اجرای يك Query ، تشكيل يك Recordset و حركت در بين ركوردهای موجود در recordset را مستقيما" كد نمايند . دستيابی داده در ASP كلاسيك مستلزم انجام مراحل زير است :


    • مرحله اول : ايجاد يك ارتباط با بانك اطلاعاتی
    • مرحله دوم : مشخص نمودن provider و مسير فيزيكی ذخيره بانك اطلاعاتی
    • مرحله سوم : ايجاد يك Recordset
    • مرحله چهارم : تعريف يك query
    • مرحله پنجم : باز كردن بانك اطلاعاتی با توجه به ارتباط ايجاد شده و اجرای query مورد نظر
    • مرحله ششم : بازيابی ركوردها و ذخيره آنان در يك recordset

    نمايش داده
    در ASP كلاسيك، امكانات پيشرفته ای به منظور نمايش داده وجود نداشت و تمام ابزار پياده كنندگان ، يك جدول Html بود كه می توانسنتد به صورت پويا سطرها و ستون هائی را به آن اضافه نمايند ( جدول از نوع Html نه به عنوان يك كنترل سرويس دهنده ) .
    مثلا" برای نمايش نتايج برگردانده شده در اثر اجرای يك query ، پياده كنندگان مجبور بودند كه در ابتدا داده را بازيابی نموده و در ادامه با استفاده از تگ <Tabel> يك جدول را ايجاد و به موازات حركت در بين ركوردهای برگردانده شده و از طريق يك حلقه تكرار ، هر يك از ركوردها را به عنوان يك سطر جديد به جدول اضافه نمايند . برای افزودن يك سطر جديد ، در ابتدا با استفاده از يك تگ <tr> يك سطر جديد ايجاد و در ادامه برای هر يك از فيلدهای موجود در جدول بانك اطلاعاتی كه اطلاعات مرتبط با آنان بازيابی شده است يك ستون به كمك تگ <td> ايجاد و در نهايت پس از نمايش تمامی ركوردهای موجود درrecordset ،‌ انتهای جدول با استفاده از تگ < table /> مشخص می گردد .
    نمايش داده در ASP كلاسيك مستلزم انجام مراحل زير است :


    • مرحله اول : ايجاد يك جدول به همراه عناوين ستون ها در خارج از حلقه تكرار
    • مرحله دوم : ايجاد يك حلقه تكرار كه شرط خاتمه آن رسيدن به انتهای ركوردهای موجود در Recordset است .
    • مرحله سوم : ايجاد يك سطر در حلقه تكرار كه شرايط نمايش يك ركورد را فراهم نمايد .
    • مرحله چهارم : ايجاد ستون های مورد نظر در هر سطر و نمايش فيلدهای داده بازيابی شده موجود در Recordset
    • مرحله پنچم: حركت اشاره گر به ركوردهای موجود در recordset به سمت جلو
    • مرحله ششم : غيرفعال كردن اتصال ايجاد شده با بانك اطلاعاتی
    • مرحله هفتم : بستن جدول پس از اتمام حلقه تكرار

    كد زير نحوه انجام عمليات فوق ( دستيابی و نمايش داده) در ASP كلاسيك را نشان می دهد :
    نحوه دستيابی
    <%
    Set adoCon = Server.CreateObject("ADODB.Connection")
    strCon = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("/../Test.mdb")
    Set rs = Server.CreateObject("ADODB.Recordset")
    strSQL = "SELECT * FROM TestTable
    rs.Open strSQL, strCon
    نحوه نمايش

    <table width="548" height="20" >
    <tr>
    <td>عنوان ستون اول </td>
    <td>عنوان ستون دوم </td>
    </tr>
    <%While (NOT rs.Eof) %>
    <tr>
    <td><%=Rs("Field1")%></td>
    <td><%=Rs("Field2")%></td>
    </tr>
    <%
    rs.MoveNext
    WEND
    Set rs = Nothing
    Set adoCon = Nothing
    %>
    </table>

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

    ASP.NET 1.x
    ASP.NET 1.x ، نسبت به نسخه قبلی يعنی ASP كلاسيك با تغييرات گسترده ای ارائه گرديد . از جمله تغييرات مهم در ارتباط با دستيابی و نمايش داده ، ارائه مجموعه كنترل هائی بود كه پياده كنندگان می توانستند از آنان به منظور نمايش اطلاعات بازيابی شده از منابع داده استفاده نمايند . در اين نسخه ، برای دستيابی به داده از امكاناتی نظير بكارگيری كنترل های خاصی استفاده نمی گرديد و عملا" روش های دستيابی داده در ASP.NET 1.x شباهت زيادی به نمايش داده در برنامه های نوشته شده با استفاده از ASP كلاسيك داشت .
    همانگونه كه اشاره گرديد ، در ASP كلاسيك به منظور نمايش اطلاعات بازيابی شده از بانك های اطلاعاتی و ساير منابع داده ، پياده كنندگان مجبور بودند كد لازم برای بازيابی و حركت بين ركوردهای بازيابی شده را نوشته و پس از تعريف يك فرمت مناسب ، محتويات مورد نظر را كه شامل اطلاعات بازيابی شده و تگ های Html است ، بر اساس يك ساختار خاص تعريف شده توسط پياده كننده در صفحات وب نمايش دهند . بدين منظور كنترل های سرويس دهنده خاصی كه از آنان با نام كنترل های نمايش اطلاعات و يا كنترل های داده وب نام برده می شود، ايجاد گرديد . پياده كننده گان با استفاده از كنترل های فوق قادر به نمايش اطلاعات بازيابی شده از منابع داده در صفحات وب بودند . كنترل های DataGrid,DataList,Repeater و يا حتی DropDownList نمونه هائی ‌از ساختارهای نمايش اطلاعات می باشند كه استفاده از آنان مستلزم نوشتن كد زيادی نمی باشد و با حداقل كد لازم می توان آنان را آماده نمايش اطلاعات مرتبط با يك منبع داده نمود . به عنوان نمونه ، پياده كنندگان با استفاده از يك كنترل سرويس دهنده نمايش اطلاعات نظير DataGrid لازم نبود كه خود را درگير تگ های Html به منظور ايجاد يك جدول نمايند .
    همانگونه كه اشاره گرديد ، يكی از مهمترين تغييرات ASP.NET 1.x نسبت به نسخه قبلی خود يعنی ASP ، ارائه كنترل های سرويس دهنده نمايش اطلاعات است كه اين امكان را در اختيار پياده كنندگان قرار می دهد تا با نوشتن حداقل كد لازم بتوانند داده مورد نظر را از هر نوع منبع داده بازيابی و با فرمت دلخواه و بهره گيری از پتانسيل های تگ های Html بر روی صفحات وب نمايش دهند . رويكرد فوق دو دستاورد مهم را برای پياده كنندگان به دنبال داشت :


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

    در ASP.NET 1.x كنترل های سرويس دهنده نمايش اطلاعات و يا كنترل های داده وب ، يك الگوی مناسب به منظور نمايش داده را ارائه می نمايند كه به نحوه تفسير و نمايش داده در هر يك از كنترل های سرويس دهنده نمايش اطلاعات وابسته نخواهد بود . مثلا" داده موجود در DataGrid در يك ساختار مشابه جدول متشكل از مجموعه ای سطر و ستون و يا در يك كنترل DropDownList نمايش داده می شود . نحوه نسبت دهی داده به دو كنترل فوق مشابه می باشد و می بايست خصلت DataSource آنان به درستی مقداردهی شود و با استفاده از متد DataBind عمليات نسبت دهی داده به كنترل مربوطه انجام شود .
    دستيابی داده
    همانگونه كه اشاره گرديد ، برای دستيابی به داده از امكاناتی نظير بكارگيری كنترل های خاصی استفاده نمی گرديد و عملا" روش های دستيابی داده در ASP.NET 1.x شباهت زيادی به برنامه های نوشته شده با استفاده از ASP كلاسيك دارد . دستيابی‌ داده در ASP.NET 1.x مستلزم انجام مراحل زير است :


    • مرحله اول : ايجاد يك ارتباط با بانك اطلاعاتی و فعال نمودن آن
    • مرحله دوم : تعريف يك query
    • مرحله سوم : ايجاد يك recordset
    • مرحله چهارم : نسبت دادن recordset به كنترل سرويس دهنده استفاده شده برای‌ نمايش اطلاعات
    • غيرفعال كردن ارتباط ايجاد شده با بانك اطلاعاتی و بستن recordset

    نمايش داده
    برای نمايش اطلاعات بازيابی شده از منابع داده در ASP.NET 1.x ،‌ كنترل های سرويس دهنده نمايش اطلاعات متعددی نظيرDataGrid,DataList,Repeater ارائه شده است . با استفاده از كنترل های فوق علاوه بر امكان مديريت آنان توسط برنامه در زمان پياده كنندگان نيز صرفه جوئی می گردد . نمايش داده در ASP.NET 1.x مستلزم انجام مراحل زير است :


    • تعريف يك كنترل سرويس دهنده نمايش اطلاعات و يا داده وب در بخش Html يك صفحه aspx .
    • اختصاص يك شناسه خاص به آن كه از طريق خصلت id انجام می شود .
    • نسبت دادن recordset بازيابی شده به خصلت DataSource كنترل در بخش Script يك صفحه aspx .
    • استفاده از متد DataBind كنترل سرويس دهنده نمايش اطلاعات به منظور انتشار داده بازيابی شده در كنترل از طريق بخش Script يك صفحه aspx .

    كد زير نحوه انجام عمليات فوق ( دستيابی و نمايش داده) در ASP,NET 1.x را نشان می دهد :
    بخش اسكريپت
    نحوه دستيابی
    <%@ 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

    مرحله اول : ايجاد و فعال نمودن يك ارتباط بانك اطلاعاتی
    DBConnection = New OleDbConnection( _
    "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=c:\Test\Test.mdb")
    DBConnection.Open()

    مرحله دوم : ايجاد يك query
    SQLString = "SELECT * FROM Students"
    DBCommand = New OleDbCommand(SQLString, DBConnection)

    مرحله سوم : ايجاد يك recordset DBReader = DBCommand.ExecuteReader()
    مرحله چهارم : نسبت دادن recordset به كنترل MyDataGrid.DataSource = DBReader
    MyDataGrid.DataBind()

    مرحله پنجم : غيرفعال كردن ارتباط ايجاد شده با بانك اطلاعاتی و بستن recordset DBReader.Close()
    DBConnection.Close()
    End Sub


    </SCRIPT>

    بخش Html
    نحوه نمايش

    <Form runat="Server" >
    <asp:DataGrid id="MyDataGrid" runat="server"/>

    </form>

    با طولانی شدن اين بخش از مقاله ، اجازه دهيد بررسی نحوه دستيابی و نمايش داده در ASP.NET 2.0 را به بخش سوم واگذار نمائيم .

  3. #3
    کاربر اخراج شده
    تاریخ عضویت
    2009/07/17
    سن
    25
    نوشته ها
    1,705

    پیش فرض كنترل های منبع داده در asp.net 2.0 ( بخش سوم )

    كنترل های منبع داده در ASP.NET 2.0 ( بخش سوم )

    آنچه تاكنون گفته شده است :


    • بخش اول : بررسی روش های متفاوت نمايش اطلاعات در صفحات وب
    • بخش دوم : بررسی روش های دستيابی و نمايش داده در ASP كلاسيك و ASP.NET 1.x

    در اين بخش به بررسی نحوه دستيابی و نمايش داده در ASP.NET 2.0 خواهيم پرداخت .
    با اين كه اكثر محتويات صفحات وب از تركيب اطلاعات ثابت با Html و يا پردازش بر روی داده های ورودی توسط كاربر تامين می گردد ولی در اكثر وب سايت های مدرن، اطلاعات از منابع ذخيره سازی داده نظير بانك های اطلاعاتی ، فايل های متنی ، XML و ساير منابع ذخيره سازی استخراج و نمايش داده می شود .
    بانك های اطلاعاتی ، معمولا" به عنوان اولين منبع ذخيره سازی داده برای ارائه اطلاعات در صفحات وب مطرح می باشند . در ASP.NET 2.0 ، امكانات متعددی به منظور تسهيل در امر دستيابی و نمايش داده بر روی صفحات وب ارائه شده است . معرفی كنترل های جديد منبع داده، نمونه ای در اين زمينه می باشد .
    در نسخه های قبل از ASP.NET 2.0 ، دستيابی به بانك های اطلاعاتی مستلزم انجام يك فرآيند خاص شامل بازنمودن بانك اطلاعاتی ، بازيابی ركوردها ، ايجاد يك ساختار تكرار به منظور حركت بين ركوردهای بازيابی شده ، انجام عمليات مورد نياز و در نهايت بستن ارتباط ايجاد شده با بانك اطلاعاتی است . در ASP.NET 2.0 تمامی عمليات فوق در كنترل هائی كه مختص اين كار طراحی شده اند ، كپسوله شده است .

    ماهيت و دستاورد كنترل های منبع داده
    در ASP.NET 2.0 ، با ارائه كنترل های خاصی كه از آنان با نام كنترل های منبع داده نام برده می شود ، پياده كنندگان می توانند به سرعت و با نوشتن حداقل كد به بانك اطلاعاتی مرتبط و پس از استخراج داده مورد نياز ، آنان را در يكی از كنترل های نمايش اطلاعات و يا برخی كنترل های سرويس دهنده ورودی ( نظير DropDownList ) نمايش دهند .
    كنترل های منبع داده ، يك روش تعريفی به منظور كار با داده را در مقابل نوشتن كد به منظور اتصال به بانك اطلاعاتی ، اجرای يك دستور ، بازيابی نتايج و ذخيره آنان در يك ساختمان داده مناسب نظير 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 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 برخورد خواهد شد .
    كنترل های منبع داده ، پياده كنندگان را قادر می سازند كه بدون نياز به كد به داده دستيابی داشته باشند ( همانند كنترل های سرويس دهنده نمايش اطلاعات كه اين امكان را در اختيار پياده كنندگان قرار می دهند تا بدون نياز به كد داده را نمايش دهند) .

    دستيابی داده
    برای دستيابی به يك منبع داده با توجه به نوع منبع داده ، می بايست از يكی از كنترل های منبع داده استفاده گردد . فرض كنيد قصد داريم به يك منبع داده از نوع بانك اطلاعاتی اكسس دستيابی داشته باشيم . بدين منظور از كنترل asp:AccessDataSource استفاده می گردد . كنترل فوق دارای خصلت های متعددی است . شكل عمومی اين كنترل به صورت زير است :

    فرمت تعريف يك AccessDataSource
    <asp:AccessDataSource id="string" Runat="Server"
    DataFile="path"
    DataSourceMode="DataSet|DataReader"
    SelectCommand="SQL SELECT statement" />

    id ، نام نسبت داده شده به كنترل است . خصلت DataFile ، مسير بانك اطلاعاتی را مشخص می نمايد . مسير فوق می تواند مسير فيزيكی سرويس دهنده باشد كه با نام يك درايو آغاز شده است و يا يك مسير مجازی نسبت به صفحه وب شامل كنترل و يا يك مسير نسبی نسبت به دايركتوری ريشه وب باشد . خصلت DataSourceMode ، نوع ساختمان داده ئی كه ركوردهای برگردانده شده در آن ذخيره خواهند شد را مشخص می نمايد . گزينه پيش فرض ، DataSet است . خصلت SelectedCommand ، يك عبارت SQL SELECT را مشخص می نمايد تا با استفاده از آن فيلدهای مورد نظر از جدول بانك اطلاعاتی بازيابی شود . در اين بخش می توان هر نوع عبارت SELECT مربوط به يك جدول و يا جداول JOIN را استفاده نمود .
    مثال : در نمونه كد زير به بانك اطلاعاتی TestDb.mdb متصل و از جدول products آن فيلدهای مورد نياز بازيابی شده است .

    دستيابی به يك بانك اطلاعاتی نمونه
    <asp:AccessDataSource id="ProductsSource" Runat="Server"
    DataFile="~/Db/TestDb.mdb"
    SelectCommand="SELECT ItemNumber, ItemName, ItemPrice, ItemQuantity FROM Products"/>
    نمايش داده
    به منظور نمايش مجموعه ركوردهای برگردانده شده با توجه به پيكربندی انجام شده كنترل منبع داده ، می توان از يك كنترل سرويس دهنده نمايش اطلاعات نظير Gridview استفاده نمود . كنترل asp:Gridview قدرتمندترين كنترل سرويس دهنده به منظور نمايش داده بازيابی شده از يك منبع داده است . كنترل فوق بگونه ای طراحی شده است تا بتواند به راحتی با جداول بانك اطلاعاتی كار كند . از كنترل فوق می توان برای نمايش ساير منابع داده رابطه ای كه اطلاعات را به صورت مجموعه ای از سطرها و ستون ها سازماندهی می نمايند نيز استفاده نمود.
    كنترل فوق ، دارای پتانسيل لازم به منظور همكاری عملياتی با كنترل های منبع داده است، بنابراين با حداقل كد ممكن می توان اطلاعات موجود در بانك اطلاعاتی را استخراج و در يك ساختار نمايشی نظير Gridview نمايش داد . Gridview ، اطلاعات استخراج شده از يك بانك اطلاعاتی را به صورت يك جدول حاوی سطرها وستون هائی نمايش می دهد .برای نسبت دادن كنترل به يك منبع داده از خصلت DataSourceID استفاده می گردد .بدين منظور، لازم است كه id كنترل منبع داده به خصلت فوق نسبت داده شود . GridView به صورت پيش فرض و اتوماتيك ، ستون هائی را متناسب با تعداد فيلدهای موجود در جدول بانك اطلاعاتی ايجاد می نمايد . تعداد سطرهای موجود در جدول نيز معادل تعداد ركوردهای بازيابی شده از بانك اطلاعاتی است .
    شكل عمومی اين كنترل به صورت زير است :

    فرمت تعريف يك Gridview
    <asp:GridView id="value" Runat="Server"
    AllowPaging="True|False"
    AllowSorting="True|False"
    AutoGenerateColumns="True|False"
    Caption="string"
    CaptionAlign="Left|NotSet|Right|Justify"
    CellPadding="n"
    CellSpacing="n"
    DataSourceID="id"
    EmptyDataText="string"
    GridLines="Both|Horizontal|Vertical|None"
    PageSize="n"
    ShowHeader="True|False"
    ShowFooter="True|False"

    property="value"...
    Style="CSS style settings..."
    HeaderStyle-property="value"...
    RowStyle-property="value"...
    AlternatingRowStyle-property="value"...
    FooterStyle-property="value"...
    />
    مثال : در نمونه كد زير يك GridView تعريف و به يك كنترل منبع داده نسبت داده شده است . برای ايجاد Gridview به حداقل كد نياز است و همه چيز به صورت تعريفی و بدون نياز به نوشتن اسكريت انجام می شود .
    نمايش اطلاعات بازيابی‌شده از يك منبع داده
    <asp:GridView id="ProductGrid" DataSourceID="Products" Runat="Server" />
    همانگونه كه در كد فوق مشاهده می نمائيد ، كنترل asp:Gridview با يك كنترل asp:AccessdataSource تركيب تا امكان ايجاد يك recordset به منظور نمايش اطلاعات موجود در يك بانك اطلاعاتی اكسس را فراهم نمايد . كنترل GridView با منبع داده از طريق خصلت DataSourceId كه مقدار id كنترل AccessDataSource را گرفته است ،‌ مرتبط شده است .
    توجه داشته باشيد كه در اين مقاله قصد تشريح عملكرد كنترل asp:AccessDastSource و يا GridView را نداريم و هدف نشان دادن نحوه دستيابی و نمايش داده در ASP.NET 2.0 است .
    مثال
    : در نمونه برنامه زير به يانك اطلاعاتی TestDb.mdb با استفاده از يك كنترل منبع داده متصل و داده بازيابی شده با استفاده از يك كنترل Gridview نمايش داده شده است .

    دستيابی
    <Form runAt="Server">
    <asp:AccessDataSource id="Products" Runat="Server"
    DataFile="~/Db/TestDb.mdb"
    SelectCommand="SELECT * FROM Products WHERE ItemType='Graphics'"/>
    نمايش
    <asp:GridView id="ProductsGrid" DataSourceID="Products" Runat="Server"
    AutoGenerateColumns="False"
    ShowFooter="True"
    Caption="<b>Graphics Products</b>"
    CellPadding="3"
    BorderStyle="Ridge"
    BorderWidth="5"
    BackColor="#F0F0F0"
    ForeColor="#000000"
    HeaderStyle-BackColor="#707070"
    HeaderStyle-ForeColor="#FFFFFF"
    HeaderStyle-Font-Names="Verdana"
    HeaderStyle-Font-Size="10pt"
    RowStyle-Font-Names="Verdana"
    RowStyle-Font-Size="10pt"
    AlternatingRowStyle-BackColor="#A0A0A0"
    FooterStyle-BackColor="#707070"
    FooterStyle-ForeColor="#FFFFFF">
    </asp:GridView>
    </Form>

    همانگونه كه در مثال فوق مشاهده می نمائيد به منظور دستيابی و نمايش داده از هيچگونه اسكريپتی استفاده نشده است ! توجه داشته باشيد كه علاوه بر امكان دستابی و نمايش داده ، می توان از پتانسيل كنترل های فوق در جهت ويرايش داده نيز استفاده نمود .
    در بخش های بعدی به بررسی هر يك از كنترل های منبع داده خواهيم پرداخت .

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •