الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

لماذا عند حذف اخر صف فى الداتا جريد يحدث خطأ

بدأه ahmead24 في 20 يونيو 2011 · 6 رد · 690 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

لماذا عند حذف اخر صف فى الداتا جريد يحدث خطأ

 try
            {
                if (e.KeyCode == Keys.Delete)
                {
                    int x, y = dg2.SelectedRows.Count;
                    for (int i = 0; i < y; i++)
                    {
                        x = dg2.SelectedRows.Count;
                        dg2.Rows.Remove(dg2.SelectedRows[x - 1]);
                    }
                    frow1 = 1;
                    for (j = 0; j <= dg2.RowCount - 1; j++)
                    {
                        dg2.Rows[j].Cells[0].Value = frow1++;
                    }
                    frow1 = dg2.RowCount;
                }
            }
            catch (Exception e1)
            {
                MessageBox.Show("لايمكن حذف صف فارغ");
            }

ارجو تحديد ما هو الخطأ فى الكود السابق و شكرا

#2

السلام عليكم ورحمه الله وبركاته

اخي ليش عملت دوران للحذف!! انت تريد حذف صف ولا كل الصفوف؟!! اذا كنت سمحت بتحديد اكثر من صف للحذف جرب الكود التالي


foreach(DataGridViewRow row in dataGridView1.SelectedRows)
dataGridView1.Rows.Remove(row);

.:: Wish to become better and better ::.

#3
VB Helper كتب:

السلام عليكم ورحمه الله وبركاته

اخي ليش عملت دوران للحذف!! انت تريد حذف صف ولا كل الصفوف؟!! اذا كنت سمحت بتحديد اكثر من صف للحذف جرب الكود التالي


foreach(DataGridViewRow row in dataGridView1.SelectedRows)
dataGridView1.Rows.Remove(row);

اشكرك على الرد بس عموما اذا جربت تحذف الصف الافتراضى الفارغ الموجود فى الداتا جرييد فسوف يظهر لك الخطأ لان الصف فارغ و لايمكن حذف صف فارغ فكيف نتخلص من هذة المشكلة ؟؟؟

#4

السلام عليكم ورحمه الله وبركاته

اخي الصف الافتراضي مخصص للإضافة, يمكنك إزالته افتراضيا من الخواص ولكن لن يتسنى لك الاضافة الا من خلال الكود ..

.:: Wish to become better and better ::.

#5

السلام عليكم و رحمة الله و بركاته

اخي كما ذكر لك اخي VBHelper ان الصف الأخير موجود حتى لو لم يكن بها اي بيانات و ذلك لقبول بيانات جديدة أي اضافة صف جديد

و اذا لا تريد ان تظهر نهائيا عليك بتعطيل امكانية اضافة السطور تلقائيا و بذلك اذا اردت ان تضيف صفا جديدا عليك بالكود

اما اذا اردت فقط ان تتفادي أي خطأ في حذف ذلك السطر مع ابقائه لتمكن المستخدم من اضافة صف جديد فيوجد خاصية في الصف نفسه اسمها IsNewRow اذا كانت الصف المحدد هي الصف المتروك لاضافة صف جديد فسيكون قيمته بtrue اما لو كان صف بها بيانات سابقة فسيكون قيمته بfalse

و بناء على الكود الذي طرحته سيكون الحل كالتالي

try
            {
                if (e.KeyCode == Keys.Delete)
                {
                    foreach (DataGridViewRow item in dg2.SelectedRows)
                    {
                        if (!item.IsNewRow) dg2.Rows.Remove(item);
                    }
                    frow1 = 1;
                    for (j = 0; j <= dg2.RowCount - 1; j++)
                    {
                        dg2.Rows[j].Cells[0].Value = frow1++;
                    }
                    frow1 = dg2.RowCount;
                }
            }
            catch (Exception e1)
            {
                MessageBox.Show("لايمكن حذف صف فارغ");
            }
#6
wisamsalah كتب:

السلام عليكم و رحمة الله و بركاته

اخي كما ذكر لك اخي VBHelper ان الصف الأخير موجود حتى لو لم يكن بها اي بيانات و ذلك لقبول بيانات جديدة أي اضافة صف جديد

و اذا لا تريد ان تظهر نهائيا عليك بتعطيل امكانية اضافة السطور تلقائيا و بذلك اذا اردت ان تضيف صفا جديدا عليك بالكود

اما اذا اردت فقط ان تتفادي أي خطأ في حذف ذلك السطر مع ابقائه لتمكن المستخدم من اضافة صف جديد فيوجد خاصية في الصف نفسه اسمها IsNewRow اذا كانت الصف المحدد هي الصف المتروك لاضافة صف جديد فسيكون قيمته بtrue اما لو كان صف بها بيانات سابقة فسيكون قيمته بfalse

و بناء على الكود الذي طرحته سيكون الحل كالتالي

try
            {
                if (e.KeyCode == Keys.Delete)
                {
                    foreach (DataGridViewRow item in dg2.SelectedRows)
                    {
                        if (!item.IsNewRow) dg2.Rows.Remove(item);
                    }
                    frow1 = 1;
                    for (j = 0; j <= dg2.RowCount - 1; j++)
                    {
                        dg2.Rows[j].Cells[0].Value = frow1++;
                    }
                    frow1 = dg2.RowCount;
                }
            }
            catch (Exception e1)
            {
                MessageBox.Show("لايمكن حذف صف فارغ");
            }

اشكركم جميعا فالحل الاخير صحيح تماما و قمت بتجربتة فحل المشكلة تماما شكرا جزيلا لتعاونكم و كرمكم فى عرض المعلومات

#7

السلام عليكم ورحمه الله وبركاته

لاشكر على واجب اخي .. بالتوفيق ..

.:: Wish to become better and better ::.

مواضيع مشابهة