FileFlow/Global_Indexer/frmLookupGrid.vb
2018-08-03 15:36:08 +02:00

77 lines
2.6 KiB
VB.net

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