jj: refetch checked values for checkable grid when filter is cleared. don't act on refresh in onSelectionChange.

This commit is contained in:
Jonathan Jenne
2018-07-13 14:52:17 +02:00
parent c77608c5e5
commit 98bc06535f

View File

@@ -1,5 +1,7 @@
Imports System.Windows.Forms
Imports System.Text.RegularExpressions
Imports DevExpress.XtraGrid
Imports DevExpress.XtraGrid.Views.Grid
Public Class ClassControlBuilder
Private _master_panel As Panel
@@ -808,6 +810,9 @@ Public Class ClassControlBuilder
Public Sub OnCheckedChanged(sender As Object, ByVal e As DevExpress.Data.SelectionChangedEventArgs)
If CURRENT_RECORD_ENABLED = False Then Exit Sub
If IsCancelCheck = True Then Exit Sub
' Wenn die aktion nicht Add oder Remove ist, wurde auch keine Checkbox angeklickt
' Dann auch nicht updaten
If e.Action = System.ComponentModel.CollectionChangeAction.Refresh Then Exit Sub
Try
Dim GridView As DevExpress.XtraGrid.Views.Grid.GridView = sender
@@ -891,6 +896,36 @@ Public Class ClassControlBuilder
End If
End Try
End Sub
Public Sub OnFilterChanged(sender As Object, e As EventArgs)
Dim gridView As GridView = sender
Dim filter = gridView.ActiveFilter
Dim controlId As Integer = DirectCast(gridView.GridControl.Tag, ClassControlMetadata).Id
Dim recordId As Integer = CURRENT_RECORD_ID
' Wenn der Filter geleert wurde, Infos über die angehakten Zeilen aus der Datenbank holen
If filter.IsEmpty Then
Try
Dim sql As String = $"SELECT VALUE FROM TBPMO_CONTROL_VALUE WHERE CONTROL_ID = {controlId} AND RECORD_ID = {recordId}"
Dim dt As DataTable = ClassDatabase.Return_Datatable(sql)
Dim values As New List(Of Object)
For Each row As DataRow In dt.Rows
values.Add(row.Item(0))
Next
' Verhindern, dass OnSelectionChanged ausgelöst wird
IsCancelCheck = True
' Jetzt die Werte neu setzen, d.h. die angehakten Zeilen setzen
ControlLoader.DataGridViewCheckable.LoadValue(gridView.GridControl, values)
IsCancelCheck = False
Catch ex As Exception
ClassLogger.Add("Error in OnFilterChanged: " & ex.Message)
End Try
End If
End Sub
Public Sub CheckBoxChanged(sender As Object, ByVal e As EventArgs)
If CURRENT_RECORD_ENABLED = False Then Exit Sub
@@ -1047,15 +1082,11 @@ Public Class ClassControlBuilder
AddHandler gridview.SelectionChanged, AddressOf RecordChanged
AddHandler gridview.SelectionChanged, AddressOf OnCheckedChanged
AddHandler gridview.CustomDrawColumnHeader, AddressOf OnDrawColumnHeader
AddHandler gridview.ColumnFilterChanged, AddressOf OnFilterChanged
End Select
End Sub
Private Sub OnDrawColumnHeader(sender As Object, e As DevExpress.XtraGrid.Views.Grid.ColumnHeaderCustomDrawEventArgs)
Console.WriteLine()
End Sub
Private Sub SetDragDropHandler(groupbox As GroupBox)
If Not IsNothing(_group_box_drag_drop_handler) Then
AddHandler groupbox.DragDrop, Me._group_box_drag_drop_handler
@@ -1100,7 +1131,7 @@ Public Class ClassControlBuilder
If dialog.ShowDialog() = DialogResult.OK Then
pb.BackgroundImageLayout = ImageLayout.Zoom
pb.BackgroundImage = CType(Drawing.Image.FromFile(dialog.FileName, True), Bitmap)
pb.BackgroundImage = CType(System.Drawing.Image.FromFile(dialog.FileName, True), Bitmap)
End If
End Sub