jj: Lookup Grid / Work in Progress
This commit is contained in:
77
Global_Indexer/frmLookupGrid.vb
Normal file
77
Global_Indexer/frmLookupGrid.vb
Normal 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
|
||||
Reference in New Issue
Block a user