From df261a36ac481fc77757b793e77ffef8c241c61b Mon Sep 17 00:00:00 2001 From: Jonathan Jenne Date: Tue, 6 Apr 2021 14:17:38 +0200 Subject: [PATCH 01/13] LookupControl: fix values disappearing from popup on second open --- Controls.LookupGrid/LookupControl3.vb | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/Controls.LookupGrid/LookupControl3.vb b/Controls.LookupGrid/LookupControl3.vb index e44244b0..3d7cf7df 100644 --- a/Controls.LookupGrid/LookupControl3.vb +++ b/Controls.LookupGrid/LookupControl3.vb @@ -49,6 +49,7 @@ Public Class RepositoryItemLookupControl3 SetDropdownButtonEnabled(_MultiSelect) End Sub + Private Const NAME_DATATABLE_INTERNAL = "__INTERNAL_DATATABLE__" Private Const TAG_DROPDOWN = "openDropdown" Private Const TAG_BUTTON_LOOKUP_FORM = "openLookupForm" @@ -165,8 +166,12 @@ Public Class RepositoryItemLookupControl3 NullText = Values.FirstOrDefault() End If - If DataSource Is Nothing Then - Dim oDataTable As New DataTable() + ' If No external Datasource is supplied, create one containing the currently selected values + ' If the current datasource is the internal one, update it + If DataSource Is Nothing OrElse (TypeOf DataSource Is DataTable AndAlso DirectCast(DataSource, DataTable).TableName = NAME_DATATABLE_INTERNAL) Then + Dim oDataTable As New DataTable() With { + .TableName = NAME_DATATABLE_INTERNAL + } oDataTable.Columns.Add(New DataColumn("Data", GetType(String))) For Each oValue In Values @@ -248,9 +253,9 @@ Public Class RepositoryItemLookupControl3 If DataSource IsNot Nothing AndAlso DataSource.Columns.Count > 0 Then Dim oFirstColumn As String = DataSource.Columns.Item(0).ColumnName - Dim oWrapped = SelectedValues.Select(Function(v As String) - Return $"'{v}'" - End Function).ToArray() + Dim oWrapped = SelectedValues. + Select(Function(v As String) $"'{v}'"). + ToArray() Dim oValueString As String = String.Join(",", oWrapped) Dim oCriterium As String = $"[{oFirstColumn}] IN ({oValueString})" View.ActiveFilterCriteria = DevExpress.Data.Filtering.CriteriaOperator.Parse(oCriterium) From 581b8d4f1f199956f3a9182107299bd351dbce70 Mon Sep 17 00:00:00 2001 From: Jonathan Jenne Date: Tue, 6 Apr 2021 14:18:06 +0200 Subject: [PATCH 02/13] LookupGrid: Version 3.0.2 --- Controls.LookupGrid/My Project/AssemblyInfo.vb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Controls.LookupGrid/My Project/AssemblyInfo.vb b/Controls.LookupGrid/My Project/AssemblyInfo.vb index ff9ace7c..5f1a2234 100644 --- a/Controls.LookupGrid/My Project/AssemblyInfo.vb +++ b/Controls.LookupGrid/My Project/AssemblyInfo.vb @@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices ' übernehmen, indem Sie "*" eingeben: ' - - + + From ec8c0c7cd9766876aa41a64919018e63a83d467c Mon Sep 17 00:00:00 2001 From: Jonathan Jenne Date: Tue, 6 Apr 2021 14:21:21 +0200 Subject: [PATCH 03/13] GlobalIndexer: Setup oncontrolchanged handler before default value --- GUIs.GlobalIndexer/ControlCreator.vb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/GUIs.GlobalIndexer/ControlCreator.vb b/GUIs.GlobalIndexer/ControlCreator.vb index 15f9a689..9481d160 100644 --- a/GUIs.GlobalIndexer/ControlCreator.vb +++ b/GUIs.GlobalIndexer/ControlCreator.vb @@ -187,6 +187,10 @@ Public Class ControlCreator oControl.Properties.PreventDuplicates = pPreventDuplicateValues oControl.Properties.AppearanceFocused.BackColor = HightlightColor + ' Add Handler before assigning Default Value so + ' OnControlChanged will fire for default values as well + AddHandler oControl.Properties.SelectedValuesChanged, Sub() OnControlChanged.Invoke(oControl) + If Not String.IsNullOrEmpty(pDefaultValue) Then Dim oDefaultValues As New List(Of String) @@ -204,8 +208,6 @@ Public Class ControlCreator oControl.Properties.SelectedValues = oDefaultValues End If - AddHandler oControl.Properties.SelectedValuesChanged, Sub() OnControlChanged.Invoke(oControl) - If OnLookupData Is Nothing Then Logger.Warn("LookupGrid Datasource could not be set, OnLookupData Function is not defined!") End If From 858ac7d312b6db272f3a398668ec67181b0526fa Mon Sep 17 00:00:00 2001 From: Jonathan Jenne Date: Tue, 6 Apr 2021 14:22:31 +0200 Subject: [PATCH 04/13] GlobalIndexer: Version 1.0.1 --- GUIs.GlobalIndexer/My Project/AssemblyInfo.vb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/GUIs.GlobalIndexer/My Project/AssemblyInfo.vb b/GUIs.GlobalIndexer/My Project/AssemblyInfo.vb index c0b3cbdf..5e67d672 100644 --- a/GUIs.GlobalIndexer/My Project/AssemblyInfo.vb +++ b/GUIs.GlobalIndexer/My Project/AssemblyInfo.vb @@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices ' indem Sie "*" wie unten gezeigt eingeben: ' - - + + From 686b5bc0ec977d775fb67ea39f937b054de0ef8d Mon Sep 17 00:00:00 2001 From: Jonathan Jenne Date: Tue, 6 Apr 2021 16:36:15 +0200 Subject: [PATCH 05/13] Config: Add Reload Function --- Modules.Config/ConfigManager.vb | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/Modules.Config/ConfigManager.vb b/Modules.Config/ConfigManager.vb index dad9c96e..cb9754cf 100644 --- a/Modules.Config/ConfigManager.vb +++ b/Modules.Config/ConfigManager.vb @@ -118,7 +118,7 @@ Public Class ConfigManager(Of T) _WriteAllValuesToUserConfig = ForceUserConfig - Config = LoadConfig() + _Config = LoadConfig() End Sub ''' @@ -145,6 +145,20 @@ Public Class ConfigManager(Of T) End Try End Function + ''' + ''' Reloads the config object from file. + ''' + ''' True if reload was successful, False otherwise + Public Function Reload() As Boolean + Try + _Config = LoadConfig() + Return True + Catch ex As Exception + _Logger.Error(ex) + Return False + End Try + End Function + ''' ''' Copies all properties from Source to Target, except those who have an attribute ''' listed in ExcludedAttributeTypes From 2cbafff539bbdb7e907516e26b3d2e773e6717ba Mon Sep 17 00:00:00 2001 From: Jonathan Jenne Date: Tue, 6 Apr 2021 16:37:00 +0200 Subject: [PATCH 06/13] Config: Version 1.1.0 --- Modules.Config/My Project/AssemblyInfo.vb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Modules.Config/My Project/AssemblyInfo.vb b/Modules.Config/My Project/AssemblyInfo.vb index c7717a79..74781c84 100644 --- a/Modules.Config/My Project/AssemblyInfo.vb +++ b/Modules.Config/My Project/AssemblyInfo.vb @@ -12,7 +12,7 @@ Imports System.Runtime.InteropServices - + @@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices ' übernehmen, indem Sie "*" eingeben: ' - - + + From 33d3af4de84176593c92e656660bc59a1ffae283 Mon Sep 17 00:00:00 2001 From: Jonathan Jenne Date: Tue, 6 Apr 2021 16:39:14 +0200 Subject: [PATCH 07/13] EDMIService: Reload Config every 5 mins and change tracelogging/debug logging based on debug option in config --- Service.EDMIService/App.config | 5 +++- Service.EDMIService/EDMIService.vbproj | 1 + Service.EDMIService/Helpers/TraceSwitch.vb | 34 ++++++++++++++++++++++ Service.EDMIService/ServiceHost.vb | 4 --- Service.EDMIService/WindowsService.vb | 25 ++++++++++++++++ 5 files changed, 64 insertions(+), 5 deletions(-) create mode 100644 Service.EDMIService/Helpers/TraceSwitch.vb diff --git a/Service.EDMIService/App.config b/Service.EDMIService/App.config index 4d9ba156..90304c22 100644 --- a/Service.EDMIService/App.config +++ b/Service.EDMIService/App.config @@ -4,7 +4,10 @@ - + diff --git a/Service.EDMIService/EDMIService.vbproj b/Service.EDMIService/EDMIService.vbproj index 74fd818f..17da2e73 100644 --- a/Service.EDMIService/EDMIService.vbproj +++ b/Service.EDMIService/EDMIService.vbproj @@ -133,6 +133,7 @@ + diff --git a/Service.EDMIService/Helpers/TraceSwitch.vb b/Service.EDMIService/Helpers/TraceSwitch.vb new file mode 100644 index 00000000..f34db423 --- /dev/null +++ b/Service.EDMIService/Helpers/TraceSwitch.vb @@ -0,0 +1,34 @@ +Public Class TraceSwitch + Inherits SourceSwitch + + Public Sub New(Name As String) + MyBase.New("System.ServiceModel") + Level = SourceLevels.Information + WcfTracesController.Instance.LevelController = AddressOf WcfTracesLevelController + End Sub + + Public Sub WcfTracesLevelController(ByVal level As SourceLevels) + Me.Level = level + End Sub +End Class + +Public Class WcfTracesController + Private Shared Controller As WcfTracesController = Nothing + + Private Sub New() + End Sub + + Public Delegate Sub TraceLevelController(ByVal level As SourceLevels) + Public LevelController As TraceLevelController + + Public Shared ReadOnly Property Instance As WcfTracesController + Get + + If Controller Is Nothing Then + Controller = New WcfTracesController() + End If + + Return Controller + End Get + End Property +End Class diff --git a/Service.EDMIService/ServiceHost.vb b/Service.EDMIService/ServiceHost.vb index e24905d0..9680df2e 100644 --- a/Service.EDMIService/ServiceHost.vb +++ b/Service.EDMIService/ServiceHost.vb @@ -9,15 +9,11 @@ Public Class ServiceHost(Of T) MyBase.New(GetType(T), baseAddresses) End Sub - - Public Sub EnableMetadataExchange(ByVal Optional EnableHttpGet As Boolean = True) If State = CommunicationState.Opened Then Throw New InvalidOperationException("Host is already opened") End If - - Dim oMetadataBehavior As ServiceMetadataBehavior = Description.Behaviors.Find(Of ServiceMetadataBehavior)() If oMetadataBehavior Is Nothing Then diff --git a/Service.EDMIService/WindowsService.vb b/Service.EDMIService/WindowsService.vb index 0a6d78e8..bf0c1f85 100644 --- a/Service.EDMIService/WindowsService.vb +++ b/Service.EDMIService/WindowsService.vb @@ -63,6 +63,19 @@ Public Class WindowsService _Config = _ConfigManager.Config _LogConfig.Debug = _ConfigManager.Config.Debug + UpdateTraceLogging() + + Dim oTimer As New Timers.Timer(60000) + AddHandler oTimer.Elapsed, Sub() + _Logger.Debug("Reloading config..") + _ConfigManager.Reload() + _Config = _ConfigManager.Config + _LogConfig.Debug = _ConfigManager.Config.Debug + + UpdateTraceLogging() + End Sub + oTimer.Start() + _Logger.Debug("Connecting to Databases") _Firebird = StartFirebird() @@ -119,6 +132,18 @@ Public Class WindowsService End Try End Sub + Private Sub UpdateTraceLogging() + ' Changing Tracelevels programmatically, + ' See: https://wcfpro.wordpress.com/2010/11/21/how-to-add-wcf-traces-programmatically/ + Dim oTraceLevel = SourceLevels.Off + + If _ConfigManager.Config.Debug Then + oTraceLevel = SourceLevels.Warning + End If + + WcfTracesController.Instance.LevelController(oTraceLevel) + End Sub + Private Function StartFirebird() As Firebird _Logger.Debug("Connecting to Firebird") From 5218782131bc73849bcd7adaf3266a435823c787 Mon Sep 17 00:00:00 2001 From: Jonathan Jenne Date: Tue, 6 Apr 2021 17:09:55 +0200 Subject: [PATCH 08/13] EDMIService: Add Logging to UpdateTraceLogging --- Service.EDMIService/WindowsService.vb | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/Service.EDMIService/WindowsService.vb b/Service.EDMIService/WindowsService.vb index bf0c1f85..26bb05b8 100644 --- a/Service.EDMIService/WindowsService.vb +++ b/Service.EDMIService/WindowsService.vb @@ -133,15 +133,25 @@ Public Class WindowsService End Sub Private Sub UpdateTraceLogging() - ' Changing Tracelevels programmatically, - ' See: https://wcfpro.wordpress.com/2010/11/21/how-to-add-wcf-traces-programmatically/ - Dim oTraceLevel = SourceLevels.Off + Try + ' Changing Tracelevels programmatically, + ' See: https://wcfpro.wordpress.com/2010/11/21/how-to-add-wcf-traces-programmatically/ + _Logger.Debug("UpdateTraceLogging running..") + _Logger.Debug("SourceLevels is off by default") - If _ConfigManager.Config.Debug Then - oTraceLevel = SourceLevels.Warning - End If + Dim oTraceLevel = SourceLevels.Off + + _Logger.Debug("Debug is currently set to {0}", _ConfigManager.Config.Debug) + If _ConfigManager.Config.Debug Then + oTraceLevel = SourceLevels.Warning + End If - WcfTracesController.Instance.LevelController(oTraceLevel) + _Logger.Debug("Setting TraceLevel to {0}", oTraceLevel) + WcfTracesController.Instance.LevelController(oTraceLevel) + Catch ex As Exception + _Logger.Warn("TraceLogging could not be updated!") + _Logger.Error(ex) + End Try End Sub Private Function StartFirebird() As Firebird From 2450977fc352e82fddd2cc44d8ed4452d6fd60b7 Mon Sep 17 00:00:00 2001 From: Jonathan Jenne Date: Wed, 7 Apr 2021 12:27:04 +0200 Subject: [PATCH 09/13] GlobalIndexer: Revert setting up handler before default value --- GUIs.GlobalIndexer/ControlCreator.vb | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/GUIs.GlobalIndexer/ControlCreator.vb b/GUIs.GlobalIndexer/ControlCreator.vb index 9481d160..15f9a689 100644 --- a/GUIs.GlobalIndexer/ControlCreator.vb +++ b/GUIs.GlobalIndexer/ControlCreator.vb @@ -187,10 +187,6 @@ Public Class ControlCreator oControl.Properties.PreventDuplicates = pPreventDuplicateValues oControl.Properties.AppearanceFocused.BackColor = HightlightColor - ' Add Handler before assigning Default Value so - ' OnControlChanged will fire for default values as well - AddHandler oControl.Properties.SelectedValuesChanged, Sub() OnControlChanged.Invoke(oControl) - If Not String.IsNullOrEmpty(pDefaultValue) Then Dim oDefaultValues As New List(Of String) @@ -208,6 +204,8 @@ Public Class ControlCreator oControl.Properties.SelectedValues = oDefaultValues End If + AddHandler oControl.Properties.SelectedValuesChanged, Sub() OnControlChanged.Invoke(oControl) + If OnLookupData Is Nothing Then Logger.Warn("LookupGrid Datasource could not be set, OnLookupData Function is not defined!") End If From 11908ab24685a5a57dd4917f7f18a559468a04aa Mon Sep 17 00:00:00 2001 From: Jonathan Jenne Date: Wed, 7 Apr 2021 12:28:40 +0200 Subject: [PATCH 10/13] LookupGrid: Update Datasource when new value is added --- Controls.LookupGrid/LookupControl3.vb | 10 +++++++++ Controls.LookupGrid/frmLookupGrid.vb | 30 ++++++++++++++++++++------- 2 files changed, 32 insertions(+), 8 deletions(-) diff --git a/Controls.LookupGrid/LookupControl3.vb b/Controls.LookupGrid/LookupControl3.vb index 3d7cf7df..dd77c3ed 100644 --- a/Controls.LookupGrid/LookupControl3.vb +++ b/Controls.LookupGrid/LookupControl3.vb @@ -229,6 +229,16 @@ Public Class RepositoryItemLookupControl3 If oResult = Windows.Forms.DialogResult.OK Then Dim oValues = oForm.SelectedValues UpdateSelectedValues(oValues) + + If oForm.NewValues.Count > 0 AndAlso TypeOf DataSource Is DataTable Then + Dim oTable As DataTable = DirectCast(DataSource, DataTable) + + For Each oValue In oForm.NewValues + Dim oRow = oTable.NewRow() + oRow.Item(0) = oValue + oTable.Rows.Add(oRow) + Next + End If End If End Using End If diff --git a/Controls.LookupGrid/frmLookupGrid.vb b/Controls.LookupGrid/frmLookupGrid.vb index c770f47d..a25db847 100644 --- a/Controls.LookupGrid/frmLookupGrid.vb +++ b/Controls.LookupGrid/frmLookupGrid.vb @@ -9,6 +9,9 @@ Public Class frmLookupGrid Public Property PreventDuplicates As Boolean Public Property DataSource As DataTable Public Property SelectedValues As List(Of String) + Public Property NewValues As New HashSet(Of String) + + Public Const COLUMN_SELECTED = "SELECTED" Private _DataColumn As Integer Private _DataSourceTemp As DataTable @@ -29,7 +32,7 @@ Public Class frmLookupGrid End If If MultiSelect Then - If Not _DataSourceTemp.Columns.Contains("SELECTED") Then + If Not _DataSourceTemp.Columns.Contains(COLUMN_SELECTED) Then Dim selectedColumn = New DataColumn() With { .ColumnName = "SELECTED", .DataType = GetType(Boolean), @@ -96,7 +99,7 @@ Public Class frmLookupGrid For oIndex = 0 To viewLookup.DataRowCount - 1 Dim oRow As DataRow = _View.GetDataRow(oIndex) Dim oSelected As Boolean = oRow.Item(0) - Dim oValue As Object = oRow.Item(1) + Dim oValue As Object = GetValueFromRow(oRow) If oSelected Then oValues.Add(oValue) @@ -115,7 +118,7 @@ Public Class frmLookupGrid Dim oValues As New List(Of String) If oRow IsNot Nothing Then - Dim oValue = oRow.Item(0) + Dim oValue = GetValueFromRow(oRow) oValues.Add(oValue) End If @@ -123,6 +126,13 @@ Public Class frmLookupGrid End If End Sub + Private Function GetValueFromRow(pRow As DataRow) As String + If MultiSelect Then + Return pRow.Item(1) + Else + Return pRow.Item(0) + End If + End Function Private Sub SyncItemsWithView(view As GridView) ' Wenn Vorbelegungen existieren, werden diese angehakt @@ -145,8 +155,6 @@ Public Class frmLookupGrid End If End If End If - - Next End If End Sub @@ -235,9 +243,15 @@ Public Class frmLookupGrid End Sub Private Sub viewLookup_ValidateRow(sender As Object, e As ValidateRowEventArgs) Handles viewLookup.ValidateRow - If MultiSelect And e.RowHandle = GridControl.NewItemRowHandle Then - Dim oRow As DataRowView = viewLookup.GetRow(e.RowHandle) - oRow.Row.Item("SELECTED") = True + If e.RowHandle = GridControl.NewItemRowHandle Then + Dim oRowView As DataRowView = viewLookup.GetRow(e.RowHandle) + Dim oValue = GetValueFromRow(oRowView.Row) + NewValues.Add(oValue) + + ' Automatically select newly added row when MultiSelect is enabled + If MultiSelect Then + oRowView.Row.Item(COLUMN_SELECTED) = True + End If End If End Sub End Class \ No newline at end of file From 96f3ece84ead0b793a17fba5fa96a6634f7040d8 Mon Sep 17 00:00:00 2001 From: Jonathan Jenne Date: Wed, 7 Apr 2021 12:28:55 +0200 Subject: [PATCH 11/13] TestGUI: update test --- GUIs.Test.TestGUI/frmLookup.vb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/GUIs.Test.TestGUI/frmLookup.vb b/GUIs.Test.TestGUI/frmLookup.vb index bca26cb3..28444bea 100644 --- a/GUIs.Test.TestGUI/frmLookup.vb +++ b/GUIs.Test.TestGUI/frmLookup.vb @@ -29,8 +29,10 @@ Public Class frmLookup LookupControl32.Properties.ValueMember = "Col1" LookupControl32.Properties.DataSource = oTable + LookupControl33.Properties.AllowAddNewValues = True LookupControl33.Properties.MultiSelect = True + LookupControl33.Properties.DataSource = oTable End Sub Private Function GetDatatable(Limit As Integer) As DataTable From 383c1ce301279010cecdf75e86cbfc373144bc51 Mon Sep 17 00:00:00 2001 From: Jonathan Jenne Date: Wed, 7 Apr 2021 13:42:14 +0200 Subject: [PATCH 12/13] LookupGrid: Fix error causing multiple entries in lookup control --- Controls.LookupGrid/LookupControl3.vb | 12 +++++++----- GUIs.Test.TestGUI/frmLookup.vb | 16 +++++++++++----- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/Controls.LookupGrid/LookupControl3.vb b/Controls.LookupGrid/LookupControl3.vb index dd77c3ed..cee08f3c 100644 --- a/Controls.LookupGrid/LookupControl3.vb +++ b/Controls.LookupGrid/LookupControl3.vb @@ -233,11 +233,13 @@ Public Class RepositoryItemLookupControl3 If oForm.NewValues.Count > 0 AndAlso TypeOf DataSource Is DataTable Then Dim oTable As DataTable = DirectCast(DataSource, DataTable) - For Each oValue In oForm.NewValues - Dim oRow = oTable.NewRow() - oRow.Item(0) = oValue - oTable.Rows.Add(oRow) - Next + If oTable.TableName <> NAME_DATATABLE_INTERNAL Then + For Each oValue In oForm.NewValues + Dim oRow = oTable.NewRow() + oRow.Item(0) = oValue + oTable.Rows.Add(oRow) + Next + End If End If End If End Using diff --git a/GUIs.Test.TestGUI/frmLookup.vb b/GUIs.Test.TestGUI/frmLookup.vb index 28444bea..7721fa3d 100644 --- a/GUIs.Test.TestGUI/frmLookup.vb +++ b/GUIs.Test.TestGUI/frmLookup.vb @@ -9,18 +9,22 @@ Public Class frmLookup Dim LookupControl31 As New LookupControl3 With { .Location = New Point(10, 10), - .Size = New Drawing.Size(100, 27) + .Size = New Size(300, 27) } Dim LookupControl32 As New LookupControl3 With { .Location = New Point(10, 60), - .Size = New Drawing.Size(100, 27) + .Size = New Size(300, 27) } Dim LookupControl33 As New LookupControl3 With { .Location = New Point(10, 110), - .Size = New Drawing.Size(100, 27) + .Size = New Size(300, 27) + } + Dim LookupControl34 As New LookupControl3 With { + .Location = New Point(10, 160), + .Size = New Size(300, 27) } - Controls.AddRange({LookupControl31, LookupControl32, LookupControl33}) + Controls.AddRange({LookupControl31, LookupControl32, LookupControl33, LookupControl34}) LookupControl31.Properties.DataSource = oTable @@ -29,10 +33,12 @@ Public Class frmLookup LookupControl32.Properties.ValueMember = "Col1" LookupControl32.Properties.DataSource = oTable - LookupControl33.Properties.AllowAddNewValues = True LookupControl33.Properties.MultiSelect = True LookupControl33.Properties.DataSource = oTable + + LookupControl34.Properties.AllowAddNewValues = True + LookupControl34.Properties.MultiSelect = True End Sub Private Function GetDatatable(Limit As Integer) As DataTable From 37ee8bef5d537cdf21a257fd692f70ca3092782e Mon Sep 17 00:00:00 2001 From: Jonathan Jenne Date: Wed, 7 Apr 2021 13:42:40 +0200 Subject: [PATCH 13/13] LookupGrid: Version 3.0.3 --- Controls.LookupGrid/My Project/AssemblyInfo.vb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Controls.LookupGrid/My Project/AssemblyInfo.vb b/Controls.LookupGrid/My Project/AssemblyInfo.vb index 5f1a2234..1ba7bcc3 100644 --- a/Controls.LookupGrid/My Project/AssemblyInfo.vb +++ b/Controls.LookupGrid/My Project/AssemblyInfo.vb @@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices ' übernehmen, indem Sie "*" eingeben: ' - - + +