jj: Work in Progress: Vector Fields / Lookup Field

This commit is contained in:
Jonathan Jenne
2018-08-07 16:14:14 +02:00
parent c5e59b617e
commit d352487f29
3 changed files with 128 additions and 15 deletions

View File

@@ -1,4 +1,7 @@
Imports DevExpress.XtraGrid.Views.Grid
Imports DevExpress.Data
Imports DevExpress.XtraGrid.Controls
Imports DevExpress.XtraGrid.Views.Base
Imports DevExpress.XtraGrid.Views.Grid
Public Class frmLookupGrid
Public Property MultiSelect As Boolean
@@ -34,23 +37,52 @@ Public Class frmLookupGrid
' Ursprüngliche Werte zwischenspeichern
originalValues = SelectedValues
SyncItemsWithView(view)
' Focus auf Find panel setzen
view.ShowFindPanel()
End Sub
Private Sub frmLookupGrid_Shown(sender As Object, e As EventArgs) Handles Me.Shown
Dim findEditor As DevExpress.XtraEditors.MRUEdit = gridLookup.Controls.Find("teFind", True).FirstOrDefault()
If findEditor IsNot Nothing Then
'AddHandler findEditor.KeyUp, AddressOf FindPanel_KeyUp
AddHandler findEditor.EditValueChanged, AddressOf FindPanel_KeyUp
End If
End Sub
Private OldFindPanelValue As String = ""
Private Sub FindPanel_KeyUp(sender As Object, e As EventArgs)
Dim findEditor As DevExpress.XtraEditors.MRUEdit = sender
If findEditor.EditValue.ToString.Count = 0 And OldFindPanelValue.Count > 0 Then
SyncItemsWithView(viewLookup)
End If
OldFindPanelValue = findEditor.EditValue
End Sub
Private Sub SyncItemsWithView(view As GridView)
' Wenn Vorbelegungen existieren
' und Mehrfachauswahl ausgewählt ist, werden diese angehakt
If SelectedValues.Count > 0 And MultiSelect Then
For i = 0 To view.DataRowCount - 1
Dim rowHandle = view.GetRowHandle(i)
Dim rowView As DataRowView = view.GetRow(rowHandle)
Dim row As DataRow = rowView.Row
Dim value = row.Item(0)
If SelectedValues.Contains(value) Then
view.SelectRow(rowHandle)
If rowView IsNot Nothing Then
Dim row As DataRow = rowView.Row
Dim value = row.Item(0)
If SelectedValues.Contains(value) Then
view.SelectRow(rowHandle)
End If
End If
Next
End If
' Focus auf Find panel setzen
view.ShowFindPanel()
End Sub
Private Sub btnOK_Click(sender As Object, e As EventArgs) Handles btnOK.Click
@@ -74,4 +106,28 @@ Public Class frmLookupGrid
Private Sub btnClear_Click(sender As Object, e As EventArgs) Handles btnClear.Click
SelectedValues = New List(Of Object)
End Sub
Private Sub frmLookupGrid_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
If e.KeyCode = Keys.Escape Then
Close()
End If
End Sub
Private Sub viewLookup_SelectionChanged(sender As Object, e As DevExpress.Data.SelectionChangedEventArgs) Handles viewLookup.SelectionChanged
If e.Action = System.ComponentModel.CollectionChangeAction.Add Then
Dim row = viewLookup.GetRow(e.ControllerRow)
Dim value As Object = row.item(0)
SelectedValues.Add(value)
ElseIf e.Action = System.ComponentModel.CollectionChangeAction.Remove Then
Dim row = viewLookup.GetRow(e.ControllerRow)
Dim value As Object = row.item(0)
SelectedValues = (From v In SelectedValues
Where v <> value
Select v).ToList()
End If
End Sub
End Class