jj: Lookup Grid / Work in Progress

This commit is contained in:
Jonathan Jenne
2018-08-03 15:36:08 +02:00
parent ea6f73af18
commit c5e59b617e
11 changed files with 1202 additions and 1485 deletions

View File

@@ -0,0 +1,77 @@
Imports DevExpress.XtraGrid.Views.Grid
Public Class frmLookupGrid
Public Property MultiSelect As Boolean
Public Property DataSource As DataTable
Public Property SelectedValues As List(Of Object)
Private originalValues As List(Of Object)
Private Sub frmLookupGrid_Load(sender As Object, e As EventArgs) Handles Me.Load
Dim view As GridView = gridLookup.DefaultView
' Anzeige Eigeschaften setzen
view.OptionsFind.AlwaysVisible = True
If MultiSelect Then
Text = "Wählen Sie einen oder mehrere Werte:"
view.OptionsSelection.MultiSelect = True
view.OptionsSelection.MultiSelectMode = GridMultiSelectMode.CheckBoxRowSelect
Else
Text = "Wählen Sie einen Wert:"
view.OptionsSelection.MultiSelect = False
view.OptionsSelection.MultiSelectMode = GridMultiSelectMode.RowSelect
End If
' Datasource setzen
gridLookup.DataSource = DataSource
' Wenn Selected Values nicht gesetzt ist, leere Liste anlegen
If SelectedValues Is Nothing Then
SelectedValues = New List(Of Object)
End If
' Ursprüngliche Werte zwischenspeichern
originalValues = SelectedValues
' 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)
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
Dim view As GridView = gridLookup.DefaultView
Dim selectedRows = view.GetSelectedRows()
Dim values As New List(Of Object)
For Each rowHandle In selectedRows
Dim value = view.GetDataRow(rowHandle)
values.Add(value.Item(0))
Next
If MultiSelect Then
SelectedValues = values
Else
SelectedValues = New List(Of Object) From {values.First()}
End If
End Sub
Private Sub btnClear_Click(sender As Object, e As EventArgs) Handles btnClear.Click
SelectedValues = New List(Of Object)
End Sub
End Class