بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
م : المشكلة طبعا كما هو معروف فإن لدى الجميع فإن DataGridView لاتدعم ظهور الأرقام التسلسلية في قاعدة بياناتك وهناك الكثير من الحلول المعقدة
( بعد بحث طويل وفقني الله عزوجل لطريقة سهل جدا لحل هذه المعضلة ) ؟
ميزات هذه الطريقة :
- سهلة
-لاتقلق في حالة ترتيب الصفوف حسب الإسم الأول أو الإسم الثاني أو التاريخ فلن يتغير التسلسل الرقمي كما في الطرق الأخرى .
ح : الحل تابع معي جيدا سأستخدم لغة #C للتوضيح
-1-
الخطوة الأولى : في حدث Form Load ضع هذا الكود
DataGridViewTextBoxCell newCell = new DataGridViewTextBoxCell(); DataGridViewColumn RNOCol = new DataGridViewColumn(newCell); RNOCol.DisplayIndex = 0; RNOCol.HeaderText = "RowsNumber"; RNOCol.Name = "RowsNumber"; dataGridView1.Columns.Add(RNOCol);
التوضيح : هذ الكود يقوم بإنشاء عمود مؤقت من الجهة اليسرى ورقم هذا العمود هو 0 يعني سيكون أول عمود في الجدول وإسم العمود RowsNumber
ملاحظة : سيعمل الكود مباشرة إذا كان إسم DataGridView هو dataGridView1 طبعا يمكنك تغيير إسم dataGridView1
-2-
الخطوة الثانية إجراء (function) قم بكتابة هذا الإجراء في أي مكان تريده :
public void fnRowsnumber()
{
int cnt = dataGridView1.Rows.Count;
int i;
for (i = 1; i <= cnt; i++)
{
dataGridView1.Rows[i - 1].Cells["RowsNumber"].Value = i;
}
}التوضيح : طبعا يفضل دائما إبتداء إسم الإجراء بـ fn والسبب ليسهل عليك التمييز بينهم وسهولة الوصول إليهم عندما يزيد عددهم
هذا الإجراء يقوم بترقيم العمود الذي قمنا بإنشائه للتو .
ملاحظة : الصفوف في DataGrideView تبدأ من الصفر
-3-
الخطوة الثالثة والأخيرة من أي حدث أقوم بإستدعاء الإجراء : () fnRowsNumber ؟
هناك حدث خاص Datagridview إسمه RowPrePaint
الآن قم بوضع بإستدعاء الإجراء كما هو موضح في الكود التالي :
private void dataGridView1_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
{
fnRowsNumber();
}التوضيح : هذا الحدث يقوم قبل رسم الصفوف سوف يقوم بكتابة الأرقام التسلسلية للصفوف .
ملاحظة : لاتخطىء وتستدعي الإجراء من الحدث FormLoad أو من أي حدث آخر كما فعلت أنا سابقا إستخدم فقط الحدث RowPrePaint
********************************************************************************
*
هذا والله أعلم وصلى اللهم على نبينا محمد وعلى آله وصحبه وسلم
أخوكم :
زيدان