المتابعون للمدونة

الثلاثاء، 22 يناير 2019

أحدث الفئة DataTable


أحدث الفئة DataTable

تمتلك فئة جدول البيانات DataTable Class الأحداث التالية: 

العمود تغير ColumnChanged:
ينطلق بعد أن تتغيّر إحدى القيم في أحد أعمدة الجدول.. والمعامل الثاني e لهذا الحدث من النوع DataColumnChangeEventArgs، وهو يمتلك الخصائص التالية: 

Column
تعيد كائن العمود DataColumn الذي حدث به التغيير.
Row
تعيد كائن الصفّ DataRow، الذي توجد به الخانة التي تغيرت.
ProposedValue
تقرأ أو تغير القيمة المقترحة (التي تغيرت).. هذا يتيح لك ـ لو أردت ـ تعديل القيمة التي تغيرت.

العمود يتغير ColumnChanging:
مماثل للحدث السابق، ولكنه ينطلق عند محاولة إجراء التغيير في أحد أعمدة الجدول (أي قبل حدوث التغيير بالفعل).. ويمكنك استخدام الكود التالي لإلغاء تغيير قيمة الخانة:
e.ProposedValue = e.Row[e.Column];
لكن عليك استخدام هذه الجملة داخل شرط، فلو استخدمتها هكذا بمفردها فستمنع المستخدم من تغيير أي خانة في أي عمود في الجدول.. لهذا فالعملي أن تستخدمها لمنع بعض القيم الخاطئة، مثل ترك عمود اسم المؤلف فارغا لأن هذا غير مقبول في قاعدة البيانات.. وستجد هذا الكود في الفئة الجزئية لجدول المؤلفين في مجموعة البيانات محددة النوع في المشروع TableAdapter:
if (e.Column == AuthorColumn && e.ProposedValue == "")
    e.ProposedValue = e.Row[e.Column];
ويمكنك بنفس الطريقة، إضافة أي شروط أخرى للتأكد من صلاحية القيم التي يدخلها المستخدم في باقي الأعمدة. 

الصف تغير RowChanged:
ينطلق بعد أن تتغيّر إحدى القيم في أحد سجلات الجدول.. والمعامل الثاني e لهذا الحدث من النوع DataRowChangeEventArgs، وهو يمتلك الخاصيتين التاليتين: 

Row
تعيد كائن الصفّ DataRow، الذي توجد به الخانة التابعة للعمود الذي حدث به التغيير.
Action
تخبرك بنوع التغيير الذي حدث للصفّ، وهي تعيد إحدى قيم المرقم DataRowAction التالية:
Add: تمت إضافة الصف.
Delete: تم حذف الصف.
Change: يتم تغيير إحدى قيم الصف.
ChangeOriginal: تم تغيير النسخة الأصلية Original Version من السجل.
ChangeCurrentAndOriginal: تم تغيير النسخة الأصلية Original Version والنسخة الحالية Current Version من السجل.
Commit: تم نقل التغييرات التي حدثت على تعاملات الصف Transactions إلى قاعدة البيانات نهائيا.
Rollback: تم التراجع عن التغييرات التي حدثت على تعاملات الصف.
Nothing: لم يحدث أي تغيير على الصف.

الصف يتغير RowChanging:
مماثل للحدث السابق، ولكنّه ينطلق عند محاولة إجراء التغيير في أحد سجلات الجدول (قبل حدوث التغيير).

صف جديد للجدول TableNewRow:
ينطلق بعد استدعاء الوسيلة NewRow التي تعيد سجلا جديدا من سجلات الجدول.. والمعامل الثاني e لهذا الحدث من النوع DataTableNewRowEventArgs، وهو يمتلك الخاصية Row التي تعيد كائن الصف DataRow الذي يمثل الصف الجديد الذي تم إنشاؤه.. هذا يتيح لك وضع أية قيم افتراضية تريها في خانات الصف الجديد. 


تم حذف الصف RowDeleted:
ينطلق بعد حذف أحد سجلات الجدول.. والمعامل الثاني e لهذا الحدث من النوع DataRowChangeEventArgs وقد تعرفنا عليه سابقا.
لاحظ أن هذا الحدث ينطلق والصف ما زال موجودا فعلا في مجموعة صفوف الجدول لكن حالته تكون DELETED، وهو ما سيسبب خطأ في البرنامج لو حاولت إضافة الصف مرة أخرى إلى الجدول!! 

تم محو الجدول TableCleared:
ينطلق مباشرة بعد نجاح الوسيلة Clear في محو كل سجلات الجدول، وقبل العودة لتنفيذ باقي الكود الذي استدعى الوسيلة Clear.. لاحظ أن هذا الحدث لن ينطلق إذا حدثت أية أخطاء أثناء حذف سجلات الجدول.
والمعامل الثاني e لهذا الحدث من النوع DataTableClearEventArgs، وهو يمتلك الخصائص التالية: 

Table
تعيد كائن الجدول DataTable الذي يتم محو سجلاته.
TableName
تعيد اسم الجدول.
TableNamespace
تعيد نطاق اسم الجدول.

يتم محو الجدول TableClearing:
مماثل للحدث السابق، ولكنه ينطلق عند محاولة محو سجلات الجدول
(بعد استدعاء الوسيلة
Clear لكن قبل تنفيذها).. هذا الحدث ينطلق دائما، حتى لو كان الجدول فارغا من السجلات فعلا. 

من كتاب من الصفر إلى الاحتراف: برمجة قواعد البيانات بتقنية ADO.NET
 

ليست هناك تعليقات:

إرسال تعليق

ملحوظة: يمكن لأعضاء المدونة فقط إرسال تعليق.

صفحة الشاعر