السلام عليكــم ورحمـة الله وبركاتــه ،،
كيف لى ان اتمكن من حذف اكثر من سجل من خلال datagrid باستخدام checkbox
لقد قام الاستاذ محمد رضى بالاجابه على ولكن ينفض التعديل البسيط فى هذا الكود مرفق المثال
delete from dept where id=@id
دا كود الحذف
السلام عليكــم ورحمـة الله وبركاتــه ،،
كيف لى ان اتمكن من حذف اكثر من سجل من خلال datagrid باستخدام checkbox
لقد قام الاستاذ محمد رضى بالاجابه على ولكن ينفض التعديل البسيط فى هذا الكود مرفق المثال
delete from dept where id=@id
دا كود الحذف
و عليكم السلام و رحمة الله تعالى و بركاته...
أختي العزيزة, هذا هو رابط الرد على سؤال حذف أسطر متعددة من الداتاجريدفيو.
المشروع الذي أرفقت لا يحتوي على قاعدة البيانات, لدى سيكون من الصعب تحريره و تصحيحه.
و عليكم السلام و رحمة الله تعالى و بركاته...
الكود يفشل بعد أول عملية حذف لأنك نسيتي غلق الإتصال مع قاعدة البيانات بعد تنفيذ الدالة ExecuteNonQuery
قومي بزيادة cn.Close() بعد ExecuteNonQuery
الكود :
'Try
For x As Integer = 0 To DataGridView1.Rows.Count - 2
Dim row As DataGridViewRow = DataGridView1.Rows(x)
' لا يمكن حذف السطر الأخير المعد لزيادة سطر جديد
If Not row.IsNewRow Then
' التحقق من قيمة الخلية تشيك بوكس
If row.Cells(4).Value = True Then
' حذف السطر
If cn.State = ConnectionState.Open Then cn.Close()
cn.Open()
cmd.Parameters.Clear()
Dim id As Integer = row.Cells(0).Value
cmd.CommandType = CommandType.StoredProcedure
cmd.CommandText = "deldept"
cmd.Parameters.Add("@id", SqlDbType.Int).Value = id
cmd.ExecuteNonQuery()
cn.Close()
DataGridView1.Rows.Remove(row)
End If
End If
Next
MessageBox.Show("تم الحذف ")ملاحظة : المرجو إرفاق نوع و نص رسالة الخطأ التي تظهر حتى تسهل عملية تحديد الخطأ و تصحيحه.
هو مفيش خطا بيحصل هو بيتم عمليه الحذف ولكن اريد ان احذف اكثر من سجل فى نفس اللحظة اعلم عليهم وادوس حذف يتم حذفهم الكود شغال مع سجل واحد فقط وانا مرفقه البرنامج مع قاعده البيانات لو فى اى سؤال تحت امرك
شكرا
قومي بزيادة الكود التالي في آخر الدالة Form1_Load لزيادة عمود اختيار الأسطر للحذف :
DataGridView1.Columns.Add(New DataGridViewCheckBoxColumn()) DataGridView1.Columns(DataGridView1.Columns.Count - 1).HeaderText = "Check 2 Del"
كود زر الحذف بعد التعديل :
For x As Integer = DataGridView1.Rows.Count - 1 To 0 Step -1
Dim row As DataGridViewRow = DataGridView1.Rows(x)
' لا يمكن حذف السطر الأخير المعد لزيادة سطر جديد
If Not row.IsNewRow Then
' التحقق من قيمة الخلية تشيك بوكس
If row.Cells(3).Value = True Then
' حذف السطر
If cn.State = ConnectionState.Open Then cn.Close()
cn.Open()
cmd.Parameters.Clear()
Dim id As Integer = row.Cells(0).Value
cmd.CommandText = "delete from dept where id = @id"
cmd.Parameters.Add("@id", SqlDbType.Int).Value = id
cmd.ExecuteNonQuery()
DataGridView1.Rows.Remove(row)
End If
End If
Next
MessageBox.Show("تم الحذف ")لا عذر لك اليوم, أختي العزيزة, قمت بتجربة الكود على البرنامج الذي أرفقت و هو يعمل كما يجب ;)
محمد رضى كتب:قومي بزيادة الكود التالي في آخر الدالة Form1_Load لزيادة عمود اختيار الأسطر للحذف :
DataGridView1.Columns.Add(New DataGridViewCheckBoxColumn()) DataGridView1.Columns(DataGridView1.Columns.Count - 1).HeaderText = "Check 2 Del"كود زر الحذف بعد التعديل :
For x As Integer = DataGridView1.Rows.Count - 1 To 0 Step -1 Dim row As DataGridViewRow = DataGridView1.Rows(x) ' لا يمكن حذف السطر الأخير المعد لزيادة سطر جديد If Not row.IsNewRow Then ' التحقق من قيمة الخلية تشيك بوكس If row.Cells(3).Value = True Then ' حذف السطر If cn.State = ConnectionState.Open Then cn.Close() cn.Open() cmd.Parameters.Clear() Dim id As Integer = row.Cells(0).Value cmd.CommandText = "delete from dept where id = @id" cmd.Parameters.Add("@id", SqlDbType.Int).Value = id cmd.ExecuteNonQuery() DataGridView1.Rows.Remove(row) End If End If Next MessageBox.Show("تم الحذف ")لا عذر لك اليوم, أختي العزيزة, قمت بتجربة الكود على البرنامج الذي أرفقت و هو يعمل كما يجب ;)
هذا الكود في السي شارب لمن اراد الكود.
for(int i = 0 ; i <= dataGridView1.Rows.Count ; i++)
{
if(Convert.ToBoolean (dataGridView1.Rows.Cells[12].Value) == true)
dataGridView1.Rows.Remove(dataGridView1.Rows);
}عذرا الكود السابق فيه خطأ.
هذا الكود الذي يعمل بالشكل الصحيح, ويحذف اكثر من سطر.
for(int i = dataGridView1.RowCount -1 ; i >=0 ; i--)
{
if (Convert.ToBoolean(dataGridView1.Rows.Cells[12].Value) == true)
{
dataGridView1.Rows.Remove(dataGridView1.Rows);
}
}تم تعديل هذه المشاركة بواسطة black_eagle في 10 مايو 2010 في 03:09