24 | Handling Clickable Buttons in DataGridView Columns (Profile, Edit, Delete)- VB.NET & SQL Server

 

شرح الكود:

الكود الذي يتم تنفيذه عند النقر على أي خلية في (DataGridView (المسمى dgv_students. يقوم

 الكود بالتحقق من العمود الذي تم النقر عليه وتنفيذ إجراءات معينة بناءً على نوع العمود.

  • senderيشير إلى الكائن الذي تفاعل مع الحدث (في هذه الحالة هو dgv_students(.
  • eيحتوي على معلومات حول الحدث مثل ColumnIndex و RowIndex

Private Sub dgv_students_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles

dgv_students.CellClick


  • cRowيحدد رقم الصف (rowالذي تم النقر عليه في DataGridView.

  • يتم تعيين قيمة ID من العمود الخاص بالطالب في الصف المحدد إلى   student_post_idهذا يتيح لنا لاحقًا معرفة أي طالب تم النقر عليه باستخدام ID

Dim cRow As Integer = dgv_students.CurrentRow.Index

student_post_id = Nothing

student_post_id = dgv_students.Rows(cRow).Cells("ID").Value


  • التحقق من العمود "profile":
  • إذا كان العمود الذي تم النقر عليه هو profile (الذي يحتوي على زر لفتح ملف الطالب)، يتم تنفيذ الكود التالي:
  • form_profileيتم تعيينه إلى قيمة "Students List".
  • frm_st_profile.Show()يتم عرض النموذج frm_st_profile الذي يحتوي على تفاصيل ملف الطالب.
  • Me.Close()يتم إغلاق النموذج الحالي (في هذه الحالة Students List.(
  • Returnيوقف التنفيذ ويخرج من الدالة إذا تم النقر على هذا الزر.




If dgv_students.Columns(cColumn).Name = "profile" Then

            form_profile = "Students List"

            student_post_id = dgv_students.Rows(cRow).Cells("ID").Value

            frm_st_profile.Show()

            Me.Close()

            Return

End If



  • التحقق من العمود "edit":

  • إذا كان العمود الذي تم النقر عليه هو edit (الذي يحتوي على زر التعديل)، يتم تنفيذ الكود التالي:
  • form_addيتم تعيينه إلى "Students List - edit".
  • Me.Enabled = Falseيتم تعطيل النموذج الحالي لكي لا يتمكن المستخدم من التفاعل
معه أثناء تعديل البيانات.
  • frm_Register_New_Student.Show()يتم عرض نموذج frm_Register_New_Student الذي
يتيح للمستخدم تعديل بيانات الطالب.
  • Returnيوقف التنفيذ ويخرج من الدالة إذا تم النقر على هذا الزر.



If dgv_students.Columns(cColumn).Name = "edit" Then

         form_add = "Students List - edit"

            student_post_id = dgv_students.Rows(cRow).Cells("ID").Value

            Me.Enabled = False

            frm_Register_New_Student.Show()

            Return

End If


الخلاصة:

  • يتم التعامل مع حدث النقر على الخلايا في DataGridView لتحديد ما إذا كان المستخدم قد نقر على زر "الملف الشخصي" أو "تعديل".
  • إذا تم النقر على "الملف الشخصي"، يتم فتح نموذج عرض تفاصيل الطالب (ملف الطالب) وإغلاق النموذج الحالي.
  • إذا تم النقر على "تعديل"، يتم فتح نموذج تعديل بيانات الطالب مع تعطيل النموذج الحالي لتجنب التفاعل معه أثناء التعديل.



الكود كاملا داخل حدث  -  dgv_students_CellClick

Private Sub dgv_students_CellClick(sender As Object, e As DataGridViewCellEventArgs)

Handles dgv_students.CellClick

 

        Dim cRow As Integer = dgv_students.CurrentRow.Index

        student_post_id = Nothing

        student_post_id = dgv_students.Rows(cRow).Cells("ID").Value

 

        'MsgBox(student_post_id)

 

        Dim cColumn As Integer = e.ColumnIndex

 

        If dgv_students.Columns(cColumn).Name = "profile" Then

            form_profile = "Students List"

            student_post_id = dgv_students.Rows(cRow).Cells("ID").Value

            frm_st_profile.Show()

            Me.Close()

            Return

        End If

 

        If dgv_students.Columns(cColumn).Name = "edit" Then

            form_add = "Students List - edit"

            student_post_id = dgv_students.Rows(cRow).Cells("ID").Value

            Me.Enabled = False

            frm_Register_New_Student.Show()

            Return

        End If

    End Sub

إذا كان لديك أي أسئلة أخرى أو تحتاج إلى مزيد من التوضيح، فلا تتردد في طرحها!


يمكنكم متابعة الدرس عن طريق اليوتيوب







تعليقات

المشاركات الشائعة من هذه المدونة

7 | Display column's stages from the database into ComboBox's Stage - VB.NET & SQL Server

26 | Filter Students List based on students' stage and Group in DataGridView - VB.NET & SQL Server

8 | Get selected Stage and Group IDs from their ComboBoxes - VB.NET & SQL Server