راهکارهای موثر در ASP.Net

 راهکار 3 - 8 : فعال کردن امکان داده پردازی دینامیک در کنترل های داده ASP.Net

مقدمه :

این راهکار قصد دارد تا نحوه اضافه کردن امکان کار دینامیک با داده ها را بدون استفاده از چهارچوب بندی اطلاعات ( Scaffolding ) به کنترل های داده وب ، آموزش دهد . این راهکار در زمانی به کار شما خواهد آمد که یک وب سایت آماده داشته باشید و بخواهید رفتار دینامیک داده ای را به کنترل های داده آن اضافه نمایید . شما می توانید از یک کنترل ObjectDataSource برای اتصال به پایگاه داده همزمان با بکار بردن قابلیت کار دینامیک با داده ها استفاده کنید ( برخلاف کنترل های سرور داده دیگر مثل LinqDataSource یا EntityDataSource که برای فعال کردن امکان کار دینامیک با داده ها در آنها بایستی از چهارچوب بندی اطلاعات ( Scsffolding) استفاده نمایید )  .
در این راهکار شما یک کلاس business دلخواه را ایجاد خواهید کرد که کنترل ObjectDataSource از آن برای اتصال و ارتباط با یک جدول پایگاه داده AdventureWorks استفاده می کند .
این راهکار مطالب زیر را پوشش خواهد داد :

  • فعال سازی امکان کار دینامیک با داده ها در یک کنترل داده وب GridView .
  • ارتباط با پایگاه داده مورد نظر خود از طریق کنترل ObjectDataSource .
  • نمایش اطلاعات یک جدول از پایگاه داده در کنترل GridView و فعال سازی امکان ویرایش اطلاعات آن برای کاربران .

برای حمایت از این راهکار ، کتاب راهکارهای موثر در ASP.Net را دانلود نمایید ...

پیش نیازها :

برای اجرای این راهکار نیاز دارید تا برنامه های زیر بر روی سایت شما نصب شده باشد :

  1. Microsoft Visual Studio .
  2. Microsoft .NET Framework  .
  3. SQL Server Express که بر روی کامپیوتر شما نصب شده باشد . این برنامه معمولا با ویژوال استودیو نصب می شود ، به همراه پایگاه داده AdventureWorksLT که در فایل پیوست پروژه قرار دارد .

مرحله اول - طراحی یک پروژه وب Asp.Net و اضافه کردن مدل داده ای به آن ( Data Model ) :

برای شروع راهکار ، در مرحله اول یک پروژه وب Asp.Net که لزوما از لحاظ داده ای دینامیک نیز نیست ، را ایجاد می کنیم . به صورت زیر :



  1. در پنل سمت چپ زبان برنامه نویسی برای وب سایت خود را انتخاب کنید . سپس در پنل میانی ، گزینه Asp.Net Empty Web Site را برای ایجاد یک وب سایت جدید و خالی انتخاب نمایید . همچنین در بخش Web Location ، گزینه File System را انتخاب کرده و در کادر متن مقابل آن ، آدرس پوشه مورد نظر خود برای قرار گیری فایل های وب سایت را تعیین نمایید . در نهایت گزینه OK را بزنید ..

مرحله بعدی اضافه کردن پایگاه داده ب وب سایت است . برای این منظور مراحل زیر را انجام دهید :

  1. در منوی Solution Explorer بر روی پوشه App_Data کلیک راست نموده و گزینه Add New Exciting را انتخاب نمایید .
  2. در منوی Add Existing Item ، به دنبال محل قرار گیری فایل پایگاه داده AdventureWorksLT گشته و آن را با زدن کلیک Add به سایت اضافه نمایید .
  3. راهنمایی -  پوشه App_Data : یک پوشه در ساختار سایت های Asp.Net است که برای قرار دادن فایل های حساس مثل منابع داده ای و ... مورد استفاده قرار می گیرد . کاربران امکان دسترسی مستقیم به فایل های درون این پوشه را ندارند . اگر وب سایت ساخته شده دارای پوشه App_Data نیست ، با کلیک راست بر روی نام سایت و انتخاب گزینه Add Asp.Net Folder ، این پوشه را به سایت اضافه نمایید .
  4. با اضافه کردن فایل پایگاه داده به سایت ، ویژوال استودیو یک نسخه کپی از این فایل را به سایت اضافه می کند . مرحله بعدی در راهکار ، ساخت مدل داده ای ( Data Model ) از روی پایگاه داده است . این مدل داده ای شامل کلاس هایی خواهد بود که به جای موجودیت های اصلی پایگاه داده ( مثل خود پایگاه داده ، جداول ، فیلدها و ... ) ایفای نقش می کنند . سیستم داده ای پویا Asp.Net از این کلاس ها برای اتصال و ارتباط با پایگاه داده استفاده خواهد نمود . در این راهکار ما از یک دیتا مدل LINQ to SQL بصورت زیر استفاده خواهیم کرد :
  5. در منوی Solution Explorer ، بر روی نام وب سایت کلیک راست نموده و سپس گزینه Add New Item را زده تا پنجره آن مطابق تصویر زیر باز شود :


  6. از پنل سمت چپ ابتدا گزینه Data و از پنل میانی پنجره ، گزینه LINQ to SQL Class را انتخاب کرده و نام آن را AdventureWorksLT.dbml تعیین نمایید .
  7. با زدن کلید Add کلاس مورد نظر ایجاد شده و پنجره ( Object Relational Designer ( O/R Designer برای ویرایش آن باز می شود ..
  8. در دیاگرام نمایش داده شده ، کلیه ستون های جدول SalesOrdersDetail را انتخاب نموده ، سپس در منوی Properties مقدار خاصیت Update Check را به Never تغییر دهید ..
  9. فایل AdventureWorksLT.dbml  را ذخیره کرده و ببندید . شما اکنون دیتا مدل لازم برای کار با پایگاه داده AdventureWorksLT  را ایجاد نموده اید .

مرحله دوم – طراحی کد لازم برای دسترسی به یک جدول خاص :

مرحله بعدی در راهکار ، طراحی کدی است که برنامه شما را قادر می سازد تا به اطلاعات پایگاه داده دسترسی داشته و آنها را مدیریت نماید . در یک پروژه وب داده ای پویا ، این گونه کدها بصورت اتوماتیک و دینامیک تولید می شوند . ولی برای راهنمایی بیشتر در این راهکار نحوه تعریف آنها را برای استفاده با یک کنترل ObjectDataSource نشان داده ایم .
کدی که در این مرحله طراحی می کنیم شامل متدهایی خواهد بود که اطلاعات فیلدهای جدول SalesOrderDetail را لیست کرده و امکان ویرایش شان را فراهم می کند . برای ایجاد کد لازم ، مراحل زیر را انجام دهید :

  1. در منوی Solution Explorer بر روی نام وب سایت خود کلیک را ست نموده و گزینه Add New Item را انتخاب نمایید تا پنجره آن بصورت زیر باز شود :
  2. از پنل میانی پنجره ، یک فایل Code File را انتخاب نموده و بر حسب زبان برنامه نویسی سایت خود ، نام آن را ProcessingOrderDetails.vb یا ProcessingOrderDetails.cs تعیین نموده و کلید Add را بزنید .
  3. برنامه یک فایل کد جدید به پروژه شما اضافه می کند . محتویات درون آن را پاک نموده و کدهای زیر را به آن اضافه نمایید :
    VB کد Imports System
    Imports System.Collections.Generic
    Imports System.Linq
    Imports System.Web

    Namespace EnableDynamicData
    Public Class ProcessingOrderDetails
    Public Function GetSalesOrderDetails() As IEnumerable( _
    Of SalesOrderDetail)
    Using db As New AdventureWorksLTDataContext()
    Return db.SalesOrderDetails.ToList()
    End Using
    End Function

    Public Sub Update(ByVal p As SalesOrderDetail)
    Using db As New AdventureWorksLTDataContext()
    db.SalesOrderDetails.Attach(p, True)
    db.SubmitChanges()
    End Using
    End Sub
    End Class
    End Namespace
    C# کد using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;

    namespace EnableDynamicData
    {
    public class ProcessingOrderDetails
    {
    public IEnumerable<SalesOrderDetail> GetSalesOrderDetails()
    {
    using (AdventureWorksLTDataContext db =
    new AdventureWorksLTDataContext())
    {
    return db.SalesOrderDetails.ToList();
    }
    }

    public void Update(SalesOrderDetail p)
    {
    using (AdventureWorksLTDataContext db =
    new AdventureWorksLTDataContext())
    {
    db.SalesOrderDetails.Attach(p, true);
    db.SubmitChanges();
    }
    }
    }
    }
  4. نکات مهم : کد فوق دارای دو متد اصلی زیر است که به تشریح کار آنها می پردازیم :
    • متد GetSalesOrderDetails : این متد اطلاعات رکوردهای جدول SalesOrderDetails را برمی گرداند . این متد محتویات شی database را ثبت کرده و از کلاس SalesOrderDetails برای بازیابی اطلاعات رکوردها استفاده می کند .
    • متد Update : این متد محتویات یک فیلد ( Column ) را در جدول SalesOrderDetails به روز می کند . این متد نیز همانند متد اول از شی و کلاس های پایگاه داده ثبت شده در برنامه استفاده می کند .
  5. فایل را ذخیره کرده و ببندید .
  6. از منوی Build ، بر روی نام وب سایت خود کلیک نمایید تا فرایند ساخت و کامپایل آن یکبار اجرا شود . این کار باعث می شود تا کلاس های داده ای و محتویات آنها ساخته شده و در سطح برنامه ثبت شوند .

مرحله سوم – فعال کردن کار دینامیک با داده ها برای یک کنترل داده :

این بخش نحوه تنظیم یک کنترل داده وب در صفحه را به شما آموزش خواهد داد که می تواند از امکاناتی مثل تمپلیت های صفحه ، اعتبارسنجی داده ها و ... که از شمای کلی پایگاه داده بدست می آید ، استفاده کند . برنامه وب شما از این امکانات به راحتی با فعال کردن قابلیت داده های دینامیک ، می تواند استفاده کند . همچنین این کنترل برای نمایش و ویرایش اطلاعات موجود در جدول SalesOrderDetail به کار می رود .
مرحله اول در این بخش ، تنظیم کنترل سرور داده برای ارتباط با پایگاه داده است . بصورت زیر :

  1. از منوی Solution Explorer بر روی نام وب سایت خود کلیک راست کرده و گزینه Add New Item را بزنید تا پنجره آن باز شود .
  2. از پنل میانی پنجره ، گزینه Web Form را برای اضافه کردن یک صفحه جدید Asp.Net به سایت انتخاب نمایید . سپس نام آن را EnableDynamicData.aspx تعیین نموده و گزینه Add را بزنید .
  3. به نمای Design رفته و از بخش کنترل های Data منوی ToolBox ، یک کنترل سرور داده ObjectDataSource را بر روی صفحه قرار دهید .
  4. بر روی کنترل ObjectDataSource راست کلیک نموده و از منوی Tasks آن ، گزینه Configure Data Source را کلیک نمایید . پنجره Choose a Bussiness Object مطابق تصویر زیر باز می شود :


  5. در لیست Choose a Bussiness Object ، گزینه کلاس processing Order Details را که در مرحله قبل ایجاد نموده ایم را انتخاب کرده ، سپس گزینه Next را بزنید . پنجره Define Data Methods همانند تصویر زیر باز می شود :
  6. در لیست Choose a Methode در لبه Select ، گزینه Get Sales Order Details و در لبه Update ، متد Update را انتخاب نمایید . سپس دکمه Finish را بزنید .

با انجام مراحل فوق ، شما کنترل سرور داده خود را به گونه ای تنظیم نموده اید از طریق کلاس Proseccing Order Details مدل داده ای ، با پایگاه داده در ارتباط است . مرحله بعدی افزودن یک کنترل داده وب به صفحه و اضافه نمودن قابلیت کار دینامیک با داده ها به آن است . در این حالت کنترل می توانداز امکانات دینامیک برای نمایش و ویرایش اطلاعات استفاده کند .
نحوه تنظیم و قرار دادن یک کنترل داده وب بصورت زیر است :

  1. از بخش کنترل های Data منوی ToolBox ،یک کنترل Grid View را بر روی صفحه قرار دهید .
  2. در قسمت Grid View Tasks که بصورت یک فلش بر روی کنترل در نمای Design نمایش داده می شود ، از لیست Choose Data Source ، گزینه Object Data Source 1 را انتخاب نمایید . این گزینه ، ID کنترلی سرور داده ای است که در مرحله قبل ایجاد کرده بودیم .
  3. از همان بخش Grid View Tasks ، گزینه های Enable Paging ، را برای فعال سازی امکان صفحه بندی ، انتخاب و ویرایش اطلاعات علامت بزنید . سپس به نمای کد Source بروید .
  4. در کد کنترل Grid View ، درون المنت Columns ، کنترل های Data Bound Field ای که بصورت اتوماتیک ایجاد شده اد را حذف کنید ( المنت Command Field را بدون تغییر رها کنید ) .
  5. امکان ایجاد و ساخت اتوماتیک ستون ها (auto _ generation of Column) را با تعیین مقدار خاصیت AutoGenerateColumns کنترل GridView بر روی True ، فعال نمایید . در این حالت کنترل GV ، فیلدهای خود را بصورت اتوماتیک و در حال RunTime ایجاد می کند . همانند کد زیر :
  6. فایل EnableDynamicData.aspx را ذخیره کرده و ببندید .
  7. سپس فایل کد صفحه فوق که En یا En می باشد را باز نموده و namespace زیر را بای فعال سازی امکان کار پویا با داده ها را به آن اضافه نمایید :
  8. همچنین در رویداد Page I it صفحه که به محض اجرای صفحه رخ می دهد ، مانند کد زیر قابلیت کار پویا با داده ها را برای کنترل GridView فعال نمایید :
  9. فایل کد خود را بسته و با زدن دکمه Build پروژه را یکبار دیگر آن را کامپایل نمایید تا کلاس های ایجاد شده بارگذاری شوند .

مرحله آخر - امتحان کردن قابلیت های داده ای پویا :

در این بخش قصد داریم تا با انجام کارهایی ، اضافه کردن قابلیت کار پویا با داده ها را به کنترل GridView اضافه نموده ایم ، امتحان کنیم . برای این منظور مراحل زیر را انجام دهید :

  1. در منوی Solution Explorer ، بر روی نام صفحه Enable Dynamic Data.aspx کلیک راست نموده و گزینه View in Browser را برای نمایش صفحه در مرورگر کلیک نمایید . مرورگر صفحه را در حالی که اطلاعات جدول Sales Over Detailes را نمایش می دهد ، باز می کند .
  2. در مرحله اول دقت نمایید که آیا اطلاعات خروجی و فیلدهای آن درست می باشد
  3. ؟ یکی از سطرها ( رکوردها ) ، گزینه Edit را کلیک نموده و در فیلد UnitPrice یک مقدار غیر عددی وارد نمایید . سپس دکمه Update را برای ذخیره کرئن تغییر فشار دهید . سیستم داده ای پویا ، پیام خطایی را به شما نمایش می دهد تحت عنوان اینکه باید مقدار وارد شده در فیلد UnitPrice عددی باشد . در همان رکورد ، برای لغو عملیات کلید Cancel را یزنید .
  4. مجددا بر روی یک سطر ( رکورد ) دلخواه ، دکمه Edit را کلیک نموده و مقدار فیلد OrderQty را به مقداری کمتر از عدد (32768) که حداکثر مقدار مجاز برای فیلد Integer است ، تغییر دهید . سپس برای ثبت تغییر دکمه Update را یزنید . به دلیل وارد نمودن اطلاعات صحیح ، صفحه اطلاعات رکورد را به روز می کند .
  5. دو مورد بالا نشان می دهد که سیستم داده ای پویا بطور صحیح با کنترل GridView کار کرده و اطلاعات لازم را درباره فیلدها و مقادیرشان را از ساختار پایگاه داده دریافت می کند . اعتبارسنجی اطلاعات یکی از قابلیت های مهم در کار با سیستم های داده ای پویاست که در این بخش به تست آن پرداختیم .


راجع این مطلب سوال یا اشکالی دارید ؟! آن را در انجمن سایت مطرح نمایید ...         >>>>>  ورود به انجمن تخصصی


نطر خودتان درباره این صفحه را با ما در میان گذاشته و در صورت تمایل از Developer1 حمایت نمایید :

آیا مطالب این صفحه برای شما مناسب و مفید بوده است :

نام :                 
آدرس Email :    
 
نظر شما :  
 
سوال امنیتی : پایتخت ایران ؟      
حمایت از سایت Developer1