ويرايش اطلاعات با کنترل SqlDataSource
مقدمه :
يکی از مهمترين عمليات هایی که بايد در يک پايگاه داده انجام شود ، ويرايش و به روز
رسانی ( Update ) اطلاعات است . داده ها در يک پايگاه داده به صورت مداوم در حال تغيير
و يا حذف و اضافه شدن هستند و کاربری که با يک پايگاه داده کار می کند ، بايد توانايي
آن را داشته باشد که در زمان های مورد نظر بتواند داده های تغيير يافته را ويرايش کرده
و آنها را حذف و يا اضافه کند .
کنترل SqlDataSource از تمامی عمليات های ذکر شده به طور کامل پشتيبانی کرده و امکانات
گسترده ای را برای ويرايش و يا حذف و اضافه کردن داده ها به کاربر می دهد . ويرايش
و به روز رسانی اطلاعات با استفاده از کنترل SqlDataSource را در اين بخش و حذف و يا
اضافه کردن اطلاعات را در بخش بعدی آموزش خواهيم داد .
به طور کلی 2 روش برای انجام عمليات ويرايش داده در کنترل SqlDataSource وجود دارد
:
- ويرايش اطلاعات با استفاده از ترکيب يک کنترل SqlDataSource با يک
کنترل داده وب که برای نمايش اطپلاعات به کار می روند مثل GridView , DetailsView و
يا FormView : کنترل های داده وب به کنترل های سرور داده از جمله SqlDataSource
متصل شده و اطلاعات بانک های اطلاعاتی رابه صورت جدول وار و مرتب در سطر و ستون ها
نمايش می دهند . چنانچه در اين کنترل ها مقدار خاصیت ShowEditButton را بر روی True
تنظيم کنيد ، يک گزينه Edit به انتدای هر سطر جدول ( رکورد ) اضافه شده که با کليک
بر روی آن گزينه ، خانه های آن سطر جدول در حالت ويرايش ( EditMode ) قرار گرفته و
به صورت کادرهای متن قابل ويرايش در می آيند . سپس کاربر می تواند مقادير آن کنترل
ها را تغيير داده و با کليک بر روی گزينه Update ( که تغيير یافته همان Edit است )
تغييرات صورت گرفته را در جدول اعمال کند . استفاده از اين کنترل ها را به صورت کامل
در بخش کنترل های داده وب ، آموزش خواهيم داد و در اين بخش روش دوم را بررسی می کنيم
.
- استفاده مستقيم از کنترل SqlDataSource و به کار بردن متد Uodate آن
: در اين حالت کنترل SqlDataSource به صورت مستقيم و بدون استفاده از يک کنترل
وب واسط مثل GridView و يا DetailsView که در روش قبلی گفتيم و با فراخوانی متد Update
آن به کار می رود . در اين حالت بايد مقاديری که می خواهند ويرايش شوند را به وسيله
پارامترهایی به کنترل ارسال کنيم . در اين بخش به بررسی اين روش می پردازيم .
ويرايش اطلاعات با استفاده از کنترل SqlDataSource :
در اينجا روش دوم را شرح خواهيم داد . همانطور که گفتيم ، در اين حالت کنترل SqlDataSource
را به صورت مستقيم و بدون استفاده از يک کنترل وب کمکی برای ويرايش اطلاعات به کار
می بريم . کنترل SqlDataSource برای ويرايش اطلاعات از يک دستور SQL از نوع Update
که در خاصيت UpdateCommand آن تعيين می شود ، استفاده می کند . همچنين پارامترهای لازم
برای ارسال مقادير جديد در درون مجموعه < UpdateParameters > آن در داخل تگ کترل
تعيين می شوند . سپس با فراخوانی متد ( ) Update کنترل ، عمليات ويرايش داده انجام
می شود .
نحوه ويرايش اطلاعات در يک جدول بانک اطلاعاتی با استفاده از کنترل SqlDataSource را
در مراحل زير و با استفاده از يک مثال فرضی درباره جدول Students در پايگاه داده دانشگاه
شرح می دهيم :
- يک کنترل SqlDataSource را بر روی صفحه اضافه کرده و آن را با تعيين خواص ConnectionString ،
ProvideName و SelectCommand
که در بخش های قبلی شرح داديم ، به پايگاه داده مورد نظر خود متصل کنيد .
- يک دستور SQL از نوع Select را برای تعيين فيلدها و رکوردهايي که در جدول بانک اطلاعاتی
بايد ويرايش شوند را در خاصيت UpdateCommand کنترل تعيين کنيد
. برای آشنايي با نحوه نوشتن دستور Update در زبان SQL به بخش
آموزش دستور Update در SQL برويد . ساختار اين دستور به جدول داده ای مورد
استفاده و اينکه چه فيلدها و رکوردهایی را می خواهيد ويرايش کنيد ، دارد . همچنين بايد
پارامترهايي که مقادير جديد برای ويرايش را دريافت کرده و به کنترل ارسال می کنند را
در اين دستور قرار دهيد .
نکته : در هنگام استفاده از پارامترها در دستورات داده ای ، برای
تعيين اينکه يک کلمه مفهوم پارامتر را دارد ، بايد در ابتدای نام آن يک کاراکتر @ را
قرار دهيم . برنامه هر بار که به چنين کلمه ای برخورد کند ، متوجه می شود که يک پارامتر
است و مقدار آن بايد از منبع داده تعیين شده ، تامین شوبد .
برای نمونه در مثال آموزشی اين بخش ، فرض کنيد می خواهيد در جدول Students پايگاه داده
دانشگاه ، نام ( Name ) و نام خواندگی ( Family ) دانشجویی را تغییر دهيد ، که شماره
ID آن توسط پارامتر Num تعيين می شود . همچنين در اين حالت نام و نام خواندگی جديد
به ترتيب توسط پارامترهای UName و UFamily به کنترل SqlDataSource ارسای می شوند .
شکل دستور Update لازم برای اين عمل به صورت زير خواهد بود :
|
UpdateCommand = " Update Students Set Name = @UName , Family = @UFamily Where ID
= @Num "
|
- پارامترهايي را که در دستور UpdateCommand کنترل SqlDataSource استفاده کرده ايد را
بايستی در مجموعه < UpdateParameters > در درون تگ کنترل
، اضافه کرده و به ازای هر عدد پارامتر استفاده شده يک تگ پارامتر ASP.NET که شامل
خصوصيات و اطلاعات لازم درباره آن پارامتر است را قرار دهيد . برای دريافت اطلاعات
راجع به نحوه تعيين و استفاده و همچنين انواع پارامترهای موجود در برنامه های ASP.NET
به بخش استفاده از پارامترهای 1 , 2
برويد .
همانطور که متوجه شديد در دستور UpdateCommand مثال فرضی از 3 پارامتر به تام های Num
, UName و UFamily استفاده کرده ايم . اين 3 پارامتر مقادير خود را از 3 کنترل TextBox
موجود بر روی صفحه دريافت می کنند . نحوه تعريف و استفاده از پارامترها در مجموعه <
UpdateParameters > کنترل SqlDataSource به صورت زير خواهد بود :
<updateparameters>
< asp:ControlParameter ControlID="txtName" Name="UName"
PropertyName="Text" />
< asp:ControlParameter ControlID="txtFamily" Name="UFamily"
PropertyName="Text" />
< asp:ControlParameter ControlID="txtNum" Name="Num"
PropertyName="Text" />
< /updateparameters >
|
- پس از تعيين پارامترها ، ساير کنترل های ديگر از جمله 3 کنترل TextBox ی که قرار است
مقادير پارامترها را از کاربر دريافت کرده را به صفحه اضافه کنيد .
- پس از انجام مراحل فوق بايد به يک وسيله متد ( ) Upadte کنترل SqlDataSource را فراخوانی
کنيم . برای فراخوانی متد به شکل کلی زير عمل می کنيم :
|
Syntax
|
SqlDataSourceنام کنترل .Update ( ) ;
مثال : SqlControl1.Update ( ) ;
|
برای فراخوانی متد ( ) Update کنترل SqlDataSource در مثال فرضی يک دکمه فرمان ( کنترل
< asp:Button > ) را به صفحه اضافه کرده و سپس در رويداد
کليک آن فراخوانی متد ( ) Upadate کنترل را قرار می دهيم .
هنگامی که کاربر اطلاعات مورد نظر خود را در کادرهای متن وارد کرده و بر روی دکمه فرمان
کليک می نمايد ، کنترل SqlDataSource ابتدا دستور Update موجود در خاصيت UpdateCommand
خود را اجرا کرده و مقادير پارامترهای مورد استفاده در آن را از کنترل های مربوط دريافت
می کند . سپس مقادير پارامترها را در دستور Upadte قرار داده و با اجرای آن ، مقادير
جديد را در جدول اعمال می کند .
مثال : در نهايت بايد کد مثال فرضی که در مراحل به آن اشاره کرديم
بايد به صورت زير باشد :
< asp:SqlDataSource runat="server" ID="SqlData1"
ConnectionString="data source = Developer-PC; initial catalog = UniverCity ; Integrated
Security = True " ProviderName="System.Data.SqlClient" SelectCommand="Select
* From Students "
UpdateCommand="Update Students Set Name = @ UName , Family = @ UFamily
Where ID = @ Num ">
<UpdateParameters>
<asp:ControlParameter ControlID="txtName"
Name="UName" PropertyName="Text" />
<asp:ControlParameter ControlID="txtFamily"
Name="UFamily" PropertyName="Text" />
<asp:ControlParameter ControlID="txtNum"
Name="Num" PropertyName="Text" />
</UpdateParameters>
</asp:SqlDataSource>
<asp:TextBox runat="server" ID="txtName" Width="80px"
/>
<asp:TextBox ID="txtFamily" runat="server" Width="80px"
/>
<asp:TextBox runat="server" ID="txtNum" Width="80px" />
<asp:Button runat="server" ID="Btn" Text="Update !"
OnClick="Btn_Click" />
|
نکته مهم : همچنن بايد کد فراخوانی متد Update کنترل SqlDataSource
که در رويداد کليک کنترل دکمکه فرمان ( کنترل < asp:button ) قرار دارد را در کد
صفحه ASP.NET ( صفحه aspx.CS ) به صورت زير قرار داد :
protected void Btn_Click (object source, EventArgs e)
{
SqlData1.Update( ) ;
}
|