From 7fc347ae05a72f4c4b5d7ff791eebb398a20912c Mon Sep 17 00:00:00 2001 From: Jonathan Jenne Date: Tue, 30 Oct 2018 15:07:38 +0100 Subject: [PATCH] jj: doubleclick to confirm, fix duplicate SELECTED column, fix list(str) --- LookupGrid/Grid.vb | 2 +- LookupGrid/My Project/licenses.licx | 5 ++- LookupGrid/frmLookupGrid.vb | 57 +++++++++++++++++++++++------ 3 files changed, 50 insertions(+), 14 deletions(-) diff --git a/LookupGrid/Grid.vb b/LookupGrid/Grid.vb index b29db143..b98006b9 100644 --- a/LookupGrid/Grid.vb +++ b/LookupGrid/Grid.vb @@ -11,7 +11,7 @@ Public Class Grid Public Property DataSource As DataTable - Public Property SelectedValues As New List(Of Object) + Public Property SelectedValues As New List(Of String) Private Sub btnOpenForm_Click(sender As Object, e As EventArgs) Handles btnOpenForm.Click Dim frm As New frmLookupGrid() With { diff --git a/LookupGrid/My Project/licenses.licx b/LookupGrid/My Project/licenses.licx index c7c9a896..651421aa 100644 --- a/LookupGrid/My Project/licenses.licx +++ b/LookupGrid/My Project/licenses.licx @@ -1,3 +1,4 @@ -DevExpress.XtraEditors.ButtonEdit, DevExpress.XtraEditors.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a -DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraEditors.GridLookUpEdit, DevExpress.XtraGrid.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraEditors.ButtonEdit, DevExpress.XtraEditors.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a diff --git a/LookupGrid/frmLookupGrid.vb b/LookupGrid/frmLookupGrid.vb index aa8e8db6..ba0fd778 100644 --- a/LookupGrid/frmLookupGrid.vb +++ b/LookupGrid/frmLookupGrid.vb @@ -7,11 +7,9 @@ Public Class frmLookupGrid Public Property AddNewValues As Boolean Public Property PreventDuplicates As Boolean Public Property DataSource As DataTable - Public Property SelectedValues As List(Of Object) + Public Property SelectedValues As List(Of String) - Private originalValues As List(Of Object) Private dataColumn As Integer - Private view As GridView Private grid As GridControl @@ -19,6 +17,22 @@ Public Class frmLookupGrid view = viewLookup grid = gridLookup + If DataSource Is Nothing Then + Exit Sub + End If + + If MultiSelect Then + If Not DataSource.Columns.Contains("SELECTED") Then + Dim selectedColumn = New DataColumn() With { + .ColumnName = "SELECTED", + .DataType = GetType(Boolean), + .DefaultValue = False + } + DataSource.Columns.Add(selectedColumn) + selectedColumn.SetOrdinal(0) + End If + End If + ' Datasource setzen grid.DataSource = DataSource @@ -47,14 +61,10 @@ Public Class frmLookupGrid view.OptionsView.NewItemRowPosition = NewItemRowPosition.None End If - ' Wenn Selected Values nicht gesetzt ist, leere Liste anlegen If SelectedValues Is Nothing Then - SelectedValues = New List(Of Object) + SelectedValues = New List(Of String) End If - ' Ursprüngliche Werte zwischenspeichern - originalValues = SelectedValues - ' Bereits ausgewählte Werte im grid auswählen SyncItemsWithView(view) @@ -90,7 +100,7 @@ Public Class frmLookupGrid view.FindFilterText = String.Empty If MultiSelect Then - Dim oValues As New List(Of Object) + Dim oValues As New List(Of String) For oIndex = 0 To viewLookup.DataRowCount - 1 Dim oRow As DataRow = view.GetDataRow(oIndex) @@ -111,7 +121,7 @@ Public Class frmLookupGrid Else Dim oRowHandle As Integer = view.GetSelectedRows().ToList().FirstOrDefault() Dim oRow As DataRow = view.GetDataRow(oRowHandle) - Dim oValues As New List(Of Object) + Dim oValues As New List(Of String) If oRow IsNot Nothing Then Dim oValue = oRow.Item(0) @@ -120,6 +130,9 @@ Public Class frmLookupGrid SelectedValues = oValues End If + + DialogResult = DialogResult.OK + Close() End Sub Private Sub btnClear_Click(sender As Object, e As EventArgs) Handles btnClear.Click @@ -133,7 +146,6 @@ Public Class frmLookupGrid End Sub Private Sub viewLookup_CellValueChanging(sender As Object, e As Views.Base.CellValueChangedEventArgs) Handles viewLookup.CellValueChanging - If e.RowHandle = GridControl.NewItemRowHandle Then Exit Sub End If @@ -153,4 +165,27 @@ Public Class frmLookupGrid e.Cancel = True End If End Sub + + Private Sub viewLookup_RowClick(sender As Object, e As RowClickEventArgs) Handles viewLookup.RowClick + ' If user double-clicks on a row + If e.Clicks = 2 And e.Button = MouseButtons.Left Then + ' And clicked row is a normal row + If e.RowHandle >= 0 Then + ' If multiselect is true, check the current row + ' If multiselect is false, select the current row and close the window + If MultiSelect = True Then + Dim row As DataRow = view.GetDataRow(e.RowHandle) + row.Item(0) = Not CBool(row.Item(0)) + Else + Dim row As DataRow = view.GetDataRow(e.RowHandle) + Dim value = row.Item(0) + + SelectedValues = New List(Of String) From {value} + + DialogResult = DialogResult.OK + Close() + End If + End If + End If + End Sub End Class \ No newline at end of file