آموزش ADO.NET > کار با اشیای داده ای ADO.NET > مدیریت رویدادها ( Events ) شی
DataSets
مدیریت رویدادها ( Events ) شی DataSets
شی DataSet دارای 3 رویداد یا Event مهم و کاربردی است که در این بخش به تشریح و نحوه
استفاده از آنها خواهیم پرداخت .
این 3 رویداد عبارتند از :
- Disposed .
- Initialized .
- MergeFailed .
رویداد MergeFailed :
مهم ترین رویداد شی DataSet رویداد MergeFailed است و زمانی اتفاق
می افتد که ساختار و Schema اشیای DataSet که قرار است با هم ادغام شوند ، متفاوت بوده
و باهم در تضاد باشند . این مسئله زمانی اتفاق می افتد که دو شی DataRow
در جدول مبدا و مقصد دارای کلید اصلی یکسان بوده و مقدار خاصیت EnforceConstraints
آن نیز بر روی true تنظیم شده باشد . برای مثال فرض کنید کلید اصلی جدول CustID و جدول
OrderID از یک شی DataSet دیگر هر دو یکسان بوده و بخواهیم این شی را باهم ادغام
نماییم .
شی MergeFailedEventArgs در هنگام بروز این رویداد
به آن ارسال شده و دارای 2 خاصیت زیر است :
- خاصیت Conflict : این خاصیت ، علت خطا در ساختار دو شی
DataSet که باعث بروز خطا در پروسه ادغام شده را تعیین می کند .
- خاصیت Table : این خاصیت نیز نام جدولی که بین دو شی در تضاد
است را تعیین می کند .
مثال عملی : در مثال زیر ، یک تابع را برای مدیریت رویداد MergeFailed
یک شی DataSet نوشته ایم .
این تابع علت بروز خطا در ادغام و نام جدولی که باعث ایراد شده است را در خروجی نمایش
می دهد :
VB کد
|
AddHandler workDS.MergeFailed, New MergeFailedEventHandler(
AddressOf DataSetMergeFailed )
Private Shared Sub DataSetMergeFailed( sender As Object,args
As MergeFailedEventArgs)
Console.WriteLine("Merge failed for table " & args.Table.TableName)
Console.WriteLine("Conflict = " & args.Conflict)
End Sub
|
C# کد
|
workDS.MergeFailed += new MergeFailedEventHandler(
DataSetMergeFailed ) ;
private static void DataSetMergeFailed( object sender, MergeFailedEventArgs
args )
{
Console.WriteLine("Merge failed for table "
+ args.Table.TableName );
Console.WriteLine("Conflict = " +
args.Conflict );
}
|
رویداد Initialized :
این رویداد زمانی اتفاق می افتد که تابع سازنده DataSet یک نمونه
جدید از این شی را می سازد . در صورت موفقیت در ساخت شی ، تابع مقدار ture و در صورت
عدم موفقیت مقدار false را برمی گرداند .
نکته : این رویداد خود دارای
2 رویداد زیر مجموعه به نام های BeginInit و EndInit
می باشد . رویداد BeginInit مقدار تابع Initialized را False کرده
و سپس پس از انجام کار رویداد EndInit آن را true می کند .
لازم به ذکر است که این رویدادها توسط ویرایشگر ویژوال استودیو استفاده شده و معمولا
در کدنویسی بصورت مستقیم استفاده نمی شود .
رویداد Disposed :
شی DataSet از کلاس MarshalByValueComponent
ایجاد شده که این کلاس هم متد Dispose و هم رویداد Disposed را فعال می کند . از رویداد
Disposed می توانید برای ایجاد یک مدیریت کننده رویداد ( Event Handler ) جهت توجه
به رویداد متد Disposed استفاده کنید . همچنین از این رویداد می توانید برای اجرای
کدهای مورد نظرخود در هنگام فراخوانی متد Dispose استفاده نمایید .
متد Dispose منابع نرم افزاری و سخت افزاری که توسط کلاس MarshalByValueComponent استفاده می شود را آزاد می
کند .
راجع این مطلب
سوال یا اشکالی دارید ؟! آن را در انجمن سایت مطرح نمایید ...
>>>>> ورود به انجمن تخصصی
نطر خودتان درباره این صفحه را با ما در میان گذاشته و در صورت تمایل از Developer1
حمایت نمایید :