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

كيفية حذف اكثر من سجل فى Datagrid بواسطه Checkbox

بدأه shosho842000 في 11 نوفمبر 2009 · 8 رد · 2,977 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

كيف لى ان اتمكن من حذف اكثر من سجل من خلال datagrid باستخدام checkbox

لقد قام الاستاذ محمد رضى بالاجابه على ولكن ينفض التعديل البسيط فى هذا الكود مرفق المثال

delete from dept where id=@id

دا كود الحذف

WindowsApplication4.rar

#2

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

أختي العزيزة, هذا هو رابط الرد على سؤال حذف أسطر متعددة من الداتاجريدفيو.

المشروع الذي أرفقت لا يحتوي على قاعدة البيانات, لدى سيكون من الصعب تحريره و تصحيحه.

#3

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

هو موضوع حذف سجل واحد شغال كويس المشكله لدى حذف اكثر من سجل لقد قمت بارسال الscript الخاصه بقاعده البيانات فى ملف

الملف فى المرفقات

1.txt

#4

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

هنا قاعده البيانات شكرا على المساعده والتواصل

3.txt

#5

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

الكود يفشل بعد أول عملية حذف لأنك نسيتي غلق الإتصال مع قاعدة البيانات بعد تنفيذ الدالة 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("تم الحذف ")

ملاحظة : المرجو إرفاق نوع و نص رسالة الخطأ التي تظهر حتى تسهل عملية تحديد الخطأ و تصحيحه.

#6

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

شكرا

#7

قومي بزيادة الكود التالي في آخر الدالة 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("تم الحذف ")

لا عذر لك اليوم, أختي العزيزة, قمت بتجربة الكود على البرنامج الذي أرفقت و هو يعمل كما يجب ;)

#8
محمد رضى كتب:

قومي بزيادة الكود التالي في آخر الدالة 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);


            }
#9

عذرا الكود السابق فيه خطأ.

هذا الكود الذي يعمل بالشكل الصحيح, ويحذف اكثر من سطر.

            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

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