08-07-25, 05:52 PM
(آخر تعديل لهذه المشاركة : 09-07-25, 01:30 AM {2} بواسطة أبو خالد الشكري.)
مرحبا بك أخي ahmedfa71
تمام ، الآن صارت المشكلة واضحة تمامًا !
يمكن التعديل في الكود قليلا لمنع التكرار في ترحيل الصفوف المحددة .
حاليا بالكود الجديد يمكنك تحديد وترحيل أكثر من صف بالنقر على Ctrl + الصفوف المطلوب ترحيلها
أولا : قم بإضافة السطرين التاليين في Form1_Load
ثانيا : قم بتعديل كود الترحيل إلى الآتي :
ثالثا : قم بتعديل كود حفظ التعديلات إلى الآتي :
تمام ، الآن صارت المشكلة واضحة تمامًا !
يمكن التعديل في الكود قليلا لمنع التكرار في ترحيل الصفوف المحددة .
حاليا بالكود الجديد يمكنك تحديد وترحيل أكثر من صف بالنقر على Ctrl + الصفوف المطلوب ترحيلها
أولا : قم بإضافة السطرين التاليين في Form1_Load
كود :
DGView.MultiSelect = True
DGView.SelectionMode = DataGridViewSelectionMode.FullRowSelectثانيا : قم بتعديل كود الترحيل إلى الآتي :
كود :
Private Sub btnEdit_Click(sender As Object, e As EventArgs) Handles btnEdit.Click
If DGView.SelectedRows.Count = 0 Then
MsgBox("الرجاء تحديد صف واحد أو أكثر", MessageBoxButtons.OK + MsgBoxStyle.DefaultButton1 + MessageBoxIcon.Exclamation + MsgBoxStyle.MsgBoxRight, "ترحيل البيانات")
Exit Sub
End If
If DGViewEdit.Columns.Count = 0 Then
For Each col As DataGridViewColumn In DGView.Columns
DGViewEdit.Columns.Add(DirectCast(col.Clone(), DataGridViewColumn))
Next
End If
For Each selectedRow As DataGridViewRow In DGView.SelectedRows
If selectedRow.IsNewRow Then Continue For
Dim selectedID As String = selectedRow.Cells(0).Value.ToString ' تأكد أن الخلية رقم صفر تخص كود الموظف
Dim alreadyExists As Boolean = False
For Each row As DataGridViewRow In DGViewEdit.Rows
If Not row.IsNewRow AndAlso row.Cells(0).Value.ToString() = selectedID Then ' تأكد أن الخلية رقم صفر تخص كود الموظف
alreadyExists = True
Exit For
End If
Next
If Not alreadyExists Then
Dim rowData As New List(Of Object)
For Each cell As DataGridViewCell In selectedRow.Cells
rowData.Add(cell.Value)
Next
DGViewEdit.Rows.Add(rowData.ToArray())
End If
Next
MsgBox("تم ترحيل الصفوف المحددة بنجاح", MessageBoxButtons.OK + MsgBoxStyle.DefaultButton1 + MessageBoxIcon.Information + MsgBoxStyle.MsgBoxRight, "ترحيل الصفوف")
End Subثالثا : قم بتعديل كود حفظ التعديلات إلى الآتي :
كود :
Private Sub btnSaveChanges_Click(sender As Object, e As EventArgs) Handles btnSaveChanges.Click
If DGViewEdit.Rows.Count = 0 Then
MessageBox.Show("لا توجد بيانات لحفظها")
Exit Sub
End If
Dim cmd As New SqlCommand
cmd.Connection = Con
Con.Open()
For Each row As DataGridViewRow In DGViewEdit.Rows
If row.IsNewRow Then Continue For
Dim ID As Integer = Convert.ToInt32(row.Cells(0).Value)
Dim NameM As String = row.Cells(1).Value.ToString()
Dim PrenomM As String = row.Cells(2).Value.ToString()
Dim NomFM As String = row.Cells(3).Value.ToString()
Dim PrenomFM As String = row.Cells(4).Value.ToString()
cmd.CommandText = "UPDATE Mowadafeen SET Ism_AlMowadhef=@ism, Prenom=@prenom , NomF=@nomf , PrenomF=@prenomf WHERE Kode_AlMowadhef=@Kode_AlMowadhef"
cmd.Parameters.Clear()
cmd.Parameters.AddWithValue("@Kode_AlMowadhef", ID)
cmd.Parameters.AddWithValue("@ism", NameM)
cmd.Parameters.AddWithValue("@prenom", PrenomM)
cmd.Parameters.AddWithValue("@nomf", NomFM)
cmd.Parameters.AddWithValue("@prenomf", PrenomFM)
cmd.ExecuteNonQuery()
Next
If Con.State = ConnectionState.Open Then Con.Close()
MessageBox.Show("تم حفظ التعديلات بنجاح")
End Sub

