راهکارهای موثر در ASP.Net
راهکار 3 - 8 : فعال کردن امکان داده پردازی دینامیک در کنترل های داده ASP.Net
مقدمه :
این راهکار قصد دارد تا نحوه اضافه کردن امکان کار دینامیک با داده ها را بدون استفاده
از چهارچوب بندی اطلاعات ( Scaffolding ) به کنترل های داده وب ، آموزش دهد . این راهکار
در زمانی به کار شما خواهد آمد که یک وب سایت آماده داشته باشید و بخواهید رفتار دینامیک
داده ای را به کنترل های داده آن اضافه نمایید . شما می توانید از یک کنترل ObjectDataSource
برای اتصال به پایگاه داده همزمان با بکار بردن قابلیت کار دینامیک با داده ها استفاده
کنید ( برخلاف کنترل های سرور داده دیگر مثل LinqDataSource یا EntityDataSource که
برای فعال کردن امکان کار دینامیک با داده ها در آنها بایستی از چهارچوب بندی اطلاعات
( Scsffolding) استفاده نمایید ) .
در این راهکار شما یک کلاس business دلخواه را ایجاد خواهید کرد که کنترل ObjectDataSource
از آن برای اتصال و ارتباط با یک جدول پایگاه داده AdventureWorks استفاده می کند .
این راهکار مطالب زیر را پوشش خواهد داد :
- فعال سازی امکان کار دینامیک با داده ها در یک کنترل داده وب GridView .
- ارتباط با پایگاه داده مورد نظر خود از طریق کنترل ObjectDataSource .
- نمایش اطلاعات یک جدول از پایگاه داده در کنترل GridView و فعال سازی امکان ویرایش
اطلاعات آن برای کاربران .
برای حمایت از این راهکار ، کتاب
راهکارهای موثر در ASP.Net را دانلود نمایید ...
پیش نیازها :
برای اجرای این راهکار نیاز دارید تا برنامه های زیر بر روی سایت شما نصب شده باشد
:
- Microsoft Visual Studio .
- Microsoft .NET Framework .
- SQL Server Express که بر روی کامپیوتر شما نصب شده باشد . این برنامه معمولا با ویژوال
استودیو نصب می شود ، به همراه پایگاه داده AdventureWorksLT که در فایل پیوست پروژه
قرار دارد .
مرحله اول - طراحی یک
پروژه وب Asp.Net و اضافه کردن مدل داده ای به آن ( Data Model
) :
برای شروع راهکار ، در مرحله اول یک پروژه وب Asp.Net که لزوما از لحاظ داده ای دینامیک
نیز نیست ، را ایجاد می کنیم . به صورت زیر :
- در پنل سمت چپ زبان برنامه نویسی برای وب سایت خود را انتخاب کنید . سپس در پنل میانی
، گزینه Asp.Net Empty Web Site را برای ایجاد یک وب سایت جدید و خالی انتخاب نمایید
. همچنین در بخش Web Location ، گزینه File System را انتخاب کرده و در کادر متن مقابل
آن ، آدرس پوشه مورد نظر خود برای قرار گیری فایل های وب سایت را تعیین نمایید . در
نهایت گزینه OK را بزنید ..
مرحله بعدی اضافه کردن پایگاه داده ب وب سایت است . برای این منظور مراحل زیر را انجام
دهید :
- در منوی Solution Explorer بر روی پوشه App_Data کلیک راست نموده و گزینه Add New Exciting
را انتخاب نمایید .
- در منوی Add Existing Item ، به دنبال محل قرار گیری فایل پایگاه داده AdventureWorksLT
گشته و آن را با زدن کلیک Add به سایت اضافه نمایید .
- راهنمایی -
پوشه App_Data : یک پوشه در ساختار سایت های Asp.Net است که برای قرار دادن
فایل های حساس مثل منابع داده ای و ... مورد استفاده قرار می گیرد . کاربران امکان
دسترسی مستقیم به فایل های درون این پوشه را ندارند . اگر وب سایت ساخته شده دارای
پوشه App_Data نیست ، با کلیک راست بر روی نام سایت و انتخاب گزینه Add Asp.Net Folder
، این پوشه را به سایت اضافه نمایید .
- با اضافه کردن فایل پایگاه داده به سایت ، ویژوال استودیو یک نسخه کپی از این فایل
را به سایت اضافه می کند . مرحله بعدی در راهکار ، ساخت مدل داده ای ( Data Model )
از روی پایگاه داده است . این مدل داده ای شامل کلاس هایی خواهد بود که به جای موجودیت
های اصلی پایگاه داده ( مثل خود پایگاه داده ، جداول ، فیلدها و ... ) ایفای نقش می
کنند . سیستم داده ای پویا Asp.Net از این کلاس ها برای اتصال و ارتباط با پایگاه داده
استفاده خواهد نمود . در این راهکار ما از یک دیتا مدل LINQ to SQL بصورت زیر استفاده
خواهیم کرد :
- در منوی Solution Explorer ، بر روی نام وب سایت کلیک راست نموده و سپس گزینه Add New
Item را زده تا پنجره آن مطابق تصویر زیر باز شود :
- از پنل سمت چپ ابتدا گزینه Data و از پنل میانی پنجره ، گزینه LINQ to SQL Class را انتخاب کرده و نام آن را AdventureWorksLT.dbml
تعیین نمایید .
- با زدن کلید Add کلاس مورد نظر ایجاد شده و پنجره ( Object Relational Designer ( O/R
Designer برای ویرایش آن باز می شود ..
-
- در دیاگرام نمایش داده شده ، کلیه ستون های جدول SalesOrdersDetail را انتخاب نموده
، سپس در منوی Properties مقدار خاصیت Update Check را به Never تغییر دهید ..
- فایل AdventureWorksLT.dbml را ذخیره کرده و ببندید . شما اکنون دیتا مدل لازم
برای کار با پایگاه داده AdventureWorksLT را ایجاد نموده اید .
مرحله دوم – طراحی کد لازم برای دسترسی به یک جدول خاص :
مرحله بعدی در راهکار ، طراحی کدی است که برنامه شما را قادر می سازد تا به اطلاعات
پایگاه داده دسترسی داشته و آنها را مدیریت نماید . در یک پروژه وب داده ای پویا ،
این گونه کدها بصورت اتوماتیک و دینامیک تولید می شوند . ولی برای راهنمایی بیشتر در
این راهکار نحوه تعریف آنها را برای استفاده با یک کنترل ObjectDataSource نشان داده
ایم .
کدی که در این مرحله طراحی می کنیم شامل متدهایی خواهد بود که اطلاعات فیلدهای جدول
SalesOrderDetail را لیست کرده و امکان ویرایش شان را فراهم می کند . برای ایجاد کد
لازم ، مراحل زیر را انجام دهید :
- در منوی Solution Explorer بر روی نام وب سایت خود کلیک را ست نموده و گزینه Add New
Item را انتخاب نمایید تا پنجره آن بصورت زیر باز شود :
- از پنل میانی پنجره ، یک فایل Code File را انتخاب نموده و بر حسب زبان برنامه نویسی
سایت خود ، نام آن را ProcessingOrderDetails.vb یا ProcessingOrderDetails.cs تعیین
نموده و کلید Add را بزنید .
- برنامه یک فایل کد جدید به پروژه شما اضافه می کند . محتویات درون آن را پاک نموده
و کدهای زیر را به آن اضافه نمایید :
|
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();
}
}
}
}
|
- نکات مهم : کد فوق دارای دو متد اصلی زیر است که به تشریح کار آنها
می پردازیم :
- متد GetSalesOrderDetails : این متد اطلاعات رکوردهای جدول
SalesOrderDetails را برمی گرداند . این متد محتویات شی database را ثبت کرده و از
کلاس SalesOrderDetails برای بازیابی اطلاعات رکوردها استفاده می کند .
- متد Update : این متد محتویات یک فیلد ( Column ) را در جدول
SalesOrderDetails به روز می کند . این متد نیز همانند متد اول از شی و کلاس های پایگاه
داده ثبت شده در برنامه استفاده می کند .
- فایل را ذخیره کرده و ببندید .
- از منوی Build ، بر روی نام وب سایت خود کلیک نمایید تا فرایند ساخت و کامپایل آن یکبار
اجرا شود . این کار باعث می شود تا کلاس های داده ای و محتویات آنها ساخته شده و در
سطح برنامه ثبت شوند .
مرحله سوم – فعال کردن کار دینامیک با داده ها برای یک کنترل داده :
این بخش نحوه تنظیم یک کنترل داده وب در صفحه را به شما آموزش خواهد داد که می تواند
از امکاناتی مثل تمپلیت های صفحه ، اعتبارسنجی داده ها و ... که از شمای کلی پایگاه
داده بدست می آید ، استفاده کند . برنامه وب شما از این امکانات به راحتی با فعال کردن
قابلیت داده های دینامیک ، می تواند استفاده کند . همچنین این کنترل برای نمایش و ویرایش
اطلاعات موجود در جدول SalesOrderDetail به کار می رود .
مرحله اول در این بخش ، تنظیم کنترل سرور داده برای ارتباط با پایگاه داده است . بصورت
زیر :
- از منوی Solution Explorer بر روی نام وب سایت خود کلیک راست کرده و گزینه Add New
Item را بزنید تا پنجره آن باز شود .
- از پنل میانی پنجره ، گزینه Web Form را برای اضافه کردن یک صفحه جدید Asp.Net به سایت
انتخاب نمایید . سپس نام آن را EnableDynamicData.aspx تعیین نموده و گزینه Add را
بزنید .
- به نمای Design رفته و از بخش کنترل های Data منوی ToolBox ، یک کنترل سرور داده ObjectDataSource
را بر روی صفحه قرار دهید .
- بر روی کنترل ObjectDataSource راست کلیک نموده و از منوی Tasks آن ، گزینه Configure
Data Source را کلیک نمایید . پنجره Choose a Bussiness Object مطابق تصویر زیر باز
می شود :
- در لیست Choose a Bussiness Object ، گزینه کلاس processing Order Details را که در
مرحله قبل ایجاد نموده ایم را انتخاب کرده ، سپس گزینه Next را بزنید . پنجره Define
Data Methods همانند تصویر زیر باز می شود :
- در لیست Choose a Methode در لبه Select ، گزینه Get Sales Order Details و در لبه
Update ، متد Update را انتخاب نمایید . سپس دکمه Finish را بزنید .
با انجام مراحل فوق ، شما کنترل سرور داده خود را به گونه ای تنظیم نموده اید از طریق
کلاس Proseccing Order Details مدل داده ای ، با پایگاه داده در ارتباط است . مرحله
بعدی افزودن یک کنترل داده وب به صفحه و اضافه نمودن قابلیت کار دینامیک با داده ها
به آن است . در این حالت کنترل می توانداز امکانات دینامیک برای نمایش و ویرایش اطلاعات
استفاده کند .
نحوه تنظیم و قرار دادن یک کنترل داده وب بصورت زیر است :
- از بخش کنترل های Data منوی ToolBox ،یک کنترل Grid View را بر روی صفحه قرار دهید
.
- در قسمت Grid View Tasks که بصورت یک فلش بر روی کنترل در نمای Design نمایش داده می
شود ، از لیست Choose Data Source ، گزینه Object Data Source 1 را انتخاب نمایید .
این گزینه ، ID کنترلی سرور داده ای است که در مرحله قبل ایجاد کرده بودیم .
- از همان بخش Grid View Tasks ، گزینه های Enable Paging ، را برای فعال سازی امکان
صفحه بندی ، انتخاب و ویرایش اطلاعات علامت بزنید . سپس به نمای کد Source بروید .
- در کد کنترل Grid View ، درون المنت Columns ، کنترل های Data Bound Field ای که بصورت
اتوماتیک ایجاد شده اد را حذف کنید ( المنت Command Field را بدون تغییر رها کنید )
.
- امکان ایجاد و ساخت اتوماتیک ستون ها (auto _ generation of Column) را با تعیین مقدار
خاصیت AutoGenerateColumns کنترل GridView بر روی True ، فعال نمایید . در این حالت
کنترل GV ، فیلدهای خود را بصورت اتوماتیک و در حال RunTime ایجاد می کند . همانند
کد زیر :
- فایل EnableDynamicData.aspx را ذخیره کرده و ببندید .
- سپس فایل کد صفحه فوق که En یا En می باشد را باز نموده و namespace زیر را بای فعال
سازی امکان کار پویا با داده ها را به آن اضافه نمایید :
- همچنین در رویداد Page I it صفحه که به محض اجرای صفحه رخ می دهد ، مانند کد زیر قابلیت
کار پویا با داده ها را برای کنترل GridView فعال نمایید :
- فایل کد خود را بسته و با زدن دکمه Build پروژه را یکبار دیگر آن را کامپایل نمایید
تا کلاس های ایجاد شده بارگذاری شوند .
مرحله آخر - امتحان کردن قابلیت های داده ای پویا :
در این بخش قصد داریم تا با انجام کارهایی ، اضافه کردن قابلیت کار پویا با داده ها
را به کنترل GridView اضافه نموده ایم ، امتحان کنیم . برای این منظور مراحل زیر را
انجام دهید :
- در منوی Solution Explorer ، بر روی نام صفحه Enable Dynamic Data.aspx کلیک راست نموده
و گزینه View in Browser را برای نمایش صفحه در مرورگر کلیک نمایید . مرورگر صفحه را
در حالی که اطلاعات جدول Sales Over Detailes را نمایش می دهد ، باز می کند .
-
- در مرحله اول دقت نمایید که آیا اطلاعات خروجی و فیلدهای آن درست می باشد
- ؟ یکی از سطرها ( رکوردها ) ، گزینه Edit را کلیک نموده و در فیلد UnitPrice یک مقدار
غیر عددی وارد نمایید . سپس دکمه Update را برای ذخیره کرئن تغییر فشار دهید . سیستم
داده ای پویا ، پیام خطایی را به شما نمایش می دهد تحت عنوان اینکه باید مقدار وارد
شده در فیلد UnitPrice عددی باشد . در همان رکورد ، برای لغو عملیات کلید Cancel را
یزنید .
- مجددا بر روی یک سطر ( رکورد ) دلخواه ، دکمه Edit را کلیک نموده و مقدار فیلد OrderQty
را به مقداری کمتر از عدد (32768) که حداکثر مقدار مجاز برای فیلد Integer است ، تغییر
دهید . سپس برای ثبت تغییر دکمه Update را یزنید . به دلیل وارد نمودن اطلاعات صحیح
، صفحه اطلاعات رکورد را به روز می کند .
- دو مورد بالا نشان می دهد که سیستم داده ای پویا بطور صحیح با کنترل GridView کار کرده
و اطلاعات لازم را درباره فیلدها و مقادیرشان را از ساختار پایگاه داده دریافت می کند
. اعتبارسنجی اطلاعات یکی از قابلیت های مهم در کار با سیستم های داده ای پویاست که
در این بخش به تست آن پرداختیم .
راجع این مطلب
سوال یا اشکالی دارید ؟! آن را در انجمن سایت مطرح نمایید ...
>>>>> ورود به انجمن تخصصی
نطر خودتان درباره این صفحه را با ما در میان گذاشته و در صورت تمایل از Developer1
حمایت نمایید :