كيفية تحديث بد DataGridView على انقر فوق خانة الاختيار
-
21-12-2019 - |
سؤال
الهدف
أنا بحاجة إلى وسيلة لضبط العناصر الانتهاء من خلال الضغط على CheckBox
في بلدي لا بد DataGridView
.بمجرد أن يتم ذلك ، البند لم يعد ينظر إليه من DataGridView
بسبب DataView
'ق صف مرشح.
تفسير
لدي DataGridView
منضم إلى DataView
.
Private Sub LoadLispImprovements()
Private ViewLispImprovements As New DataView
ViewLispImprovements.Table = Programs.Tables("dtLispImprovements")
ViewLispImprovements.RowFilter = "Completed=0"
Lisp_dgvImprovements.DataSource = ViewLispImprovements
End Sub
هذا DataView
's إعداد طاولة التالية DataTable
:
هذا DataTable
يحتوي المفتاح الأساسي تعيين الحقل الصحيح.على Completed
حقل مربع أحمر فقط أن أريكم أن أضع على أنها قيمة منطقية.
نلقي نظرة على بلدي DataGridView
:
هنا حيث كنت سوف انقر على مربع الاختيار و هذا البند يجب أن تحصل على تصفيتها (لأن الاختيار مشاهدةجميع لم يتم التحقق)
المشكلة
عندما اضغط على CheckBox
البند يبقى في DataGridView
.من أجل الحصول على تصفيتها ، يجب تحديد صف آخر.نلقي نظرة:
و عندما أقوم بتغيير الصفوف تذهب في النهاية:
كيف يمكنني الحصول عليه لإزالة نفسها على الفور بعد أن راجعت الانتهاء من الاختيار?
P. S:نعم لدي CurrentCellDirtyStateChanged معالج الحدث.
Private Sub Lisp_dgvImprovements_CurrentCellDirtyStateChanged(sender As Object, e As System.EventArgs) Handles Lisp_dgvImprovements.CurrentCellDirtyStateChanged
If Lisp_dgvImprovements.IsCurrentCellDirty Then
Lisp_dgvImprovements.CommitEdit(DataGridViewDataErrorContexts.Commit)
End If
End Sub
المحلول
يمكنك تحقيق ذلك من خلال إنهاء تحرير من DataRow
عندما تكون قيمة الخلية يتغير.
Private Sub Lisp_dgvImprovements_CurrentCellDirtyStateChanged(sender As Object, e As System.EventArgs) Handles Lisp_dgvImprovements.CurrentCellDirtyStateChanged
If (Me.Lisp_dgvImprovements.IsCurrentCellDirty) Then
Me.Lisp_dgvImprovements.CommitEdit(DataGridViewDataErrorContexts.Commit)
End If
End Sub
Private Sub Lisp_dgvImprovements_CellValueChanged(sender As System.Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles Lisp_dgvImprovements.CellValueChanged
' |-- The index of boolean DataGridViewColumn
If ((e.ColumnIndex = 0) AndAlso (e.RowIndex > -1)) Then
With Me.Lisp_dgvImprovements.Rows(e.RowIndex)
If (Not .IsNewRow) Then
With DirectCast(.DataBoundItem, DataRowView).Row
' |-- The index of boolean DataColumn
.Item(0) = True
.EndEdit()
End With
End If
End With
End If
End Sub