Speed Otimizing Lookp etc
This commit is contained in:
@@ -127,6 +127,7 @@ Public Class frmValidator
|
||||
Private ReadOnly _SqlDataCache As New Dictionary(Of String, DataTable)(StringComparer.OrdinalIgnoreCase)
|
||||
Private ReadOnly _SqlScalarCache As New Dictionary(Of String, Object)(StringComparer.OrdinalIgnoreCase)
|
||||
Private _SqlControlsByGuid As Dictionary(Of Integer, List(Of DataRow))
|
||||
Private _LookupControlsByRepository As Dictionary(Of RepositoryItemLookupControl3, LookupControl3)
|
||||
Private Class Translation_Strings
|
||||
Inherits My.Resources.frmValidator_Strings
|
||||
End Class
|
||||
@@ -934,6 +935,7 @@ Public Class frmValidator
|
||||
Try
|
||||
|
||||
PanelValidatorControl.Controls.Clear()
|
||||
_LookupControlsByRepository = New Dictionary(Of RepositoryItemLookupControl3, LookupControl3)()
|
||||
Dim oSQL = $"SELECT [dbo].[FNPM_LANGUAGE_CONTROL_TEXT] (NAME,'{USER_LANGUAGE}',CTRL_TYPE,CTRL_TEXT) CTRL_CAPTION_LANG, * FROM TBPM_PROFILE_CONTROLS WHERE CONTROL_ACTIVE = 1 AND PROFIL_ID = {CURRENT_ProfilGUID} ORDER BY Y_LOC, X_LOC"
|
||||
DT_CONTROLS = DatabaseFallback.GetDatatable("TBPM_PROFILE_CONTROLS_LANGUAGE", New GetDatatableOptions(oSQL, DatabaseType.ECM) With {
|
||||
.FilterExpression = $"LANGUAGE = '{USER_LANGUAGE}' AND PROFIL_ID = {CURRENT_ProfilGUID}",
|
||||
@@ -1136,21 +1138,57 @@ Public Class frmValidator
|
||||
'MyLookupControl.Properties.AllowAddNewValues = oControlRow.Item("VKT_ADD_ITEM")
|
||||
MyLookupControl.Properties.MultiSelect = oMultiselect
|
||||
|
||||
Dim oCONID As Integer
|
||||
Try
|
||||
oCONID = PreventNulletc(oControlRow.Item("CONNECTION_ID"), "Integer")
|
||||
Catch ex As Exception
|
||||
oCONID = 0
|
||||
End Try
|
||||
|
||||
If oCONID > 0 Then
|
||||
Dim oCommandSQL_UBPF
|
||||
Try
|
||||
oCommandSQL_UBPF = oControlRow.Item("SQL_UEBERPRUEFUNG")
|
||||
oCommandSQL_UBPF = oControlRow.Item("SQL_UEBERPRUEFUNG")
|
||||
Catch ex As Exception
|
||||
oCommandSQL_UBPF = ""
|
||||
End Try
|
||||
If oCommandSQL_UBPF <> String.Empty Then
|
||||
Try
|
||||
oSQL = PreventNulletc(oControlRow.Item("SQL_UEBERPRUEFUNG"), "String")
|
||||
|
||||
If clsPatterns.HasOnlySimplePatterns(oSQL) Then
|
||||
oSQL = clsPatterns.ReplaceInternalValues(oSQL)
|
||||
oSQL = clsPatterns.ReplaceControlValues(oSQL, PanelValidatorControl, True)
|
||||
|
||||
Dim oDT As DataTable = GetCachedDatatable(oSQL, oCONID)
|
||||
|
||||
MyLookupControl.Properties.DataSource = Nothing
|
||||
If Not IsNothing(oDT) AndAlso oDT.Rows.Count > 0 Then
|
||||
MyLookupControl.Properties.DataSource = oDT
|
||||
MyLookupControl.Properties.ValueMember = oDT.Columns.Item(0).ColumnName
|
||||
MyLookupControl.Properties.DisplayMember = oDT.Columns.Item(0).ColumnName
|
||||
End If
|
||||
End If
|
||||
Catch ex As Exception
|
||||
MyValidationLogger.Warn($"Unexpected error in LOOKUP GetValues SQL - Error: {ex.Message}")
|
||||
End Try
|
||||
End If
|
||||
End If
|
||||
|
||||
If ObjectEx.NotNull(oControlRow.Item("DEFAULT_VALUE"), "") <> "" Then
|
||||
MyLookupControl.Properties.SelectedValues = New List(Of String) From {oControlRow.Item("DEFAULT_VALUE")}
|
||||
End If
|
||||
|
||||
oMyControl = MyLookupControl
|
||||
_LookupControlsByRepository(MyLookupControl.Properties) = MyLookupControl
|
||||
AddHandler MyLookupControl.Properties.SelectedValuesChanged, AddressOf LookupListChanged
|
||||
|
||||
'Wenn Multiselect false dann prüfen ob abhängiges Control
|
||||
' If oMultiselect = False Then
|
||||
Dim oFilteredData As DataTable = DT_CONTROLS.Clone()
|
||||
Dim oExpression = $"SQL_UEBERPRUEFUNG like '%#CTRL#{oMyControl.Name}%'"
|
||||
DT_CONTROLS.Select(oExpression).CopyToDataTable(oFilteredData, LoadOption.PreserveChanges)
|
||||
If oFilteredData.Rows.Count >= 1 Then
|
||||
MyValidationLogger.Debug($"createControlsLU - Found {oFilteredData.Rows.Count} Controls which are depending on {oMyControl.Name}")
|
||||
'AddHandler lookup.EditValueChanged, AddressOf onLookUp1
|
||||
AddHandler MyLookupControl.Properties.SelectedValuesChanged, AddressOf onLookUpselectedValue
|
||||
End If
|
||||
|
||||
@@ -1158,22 +1196,17 @@ Public Class frmValidator
|
||||
DT_CONTROLS.Select(oExpression).CopyToDataTable(oFilteredData, LoadOption.PreserveChanges)
|
||||
If oFilteredData.Rows.Count >= 1 Then
|
||||
MyValidationLogger.Debug($"createControlsLU - Found {oFilteredData.Rows.Count} Controls which' enable state is depending on {oMyControl.Name}")
|
||||
'AddHandler lookup.EditValueChanged, AddressOf onLookUp1
|
||||
AddHandler MyLookupControl.Properties.SelectedValuesChanged, AddressOf onLookUpselectedValue
|
||||
End If
|
||||
|
||||
|
||||
oFilteredData = DT_CONTROLS.Clone()
|
||||
oExpression = $"GUID = {oControlRow.Item("GUID")} and Len(SET_CONTROL_DATA) > 0"
|
||||
DT_CONTROLS.Select(oExpression).CopyToDataTable(oFilteredData, LoadOption.PreserveChanges)
|
||||
If oFilteredData.Rows.Count = 1 Then
|
||||
'AddHandler lookup.EditValueChanged, AddressOf onLookUp1
|
||||
AddHandler MyLookupControl.Properties.SelectedValuesChanged, AddressOf onLookUpselectedValue_Control2Set
|
||||
End If
|
||||
oFilteredData = DT_CONTROLS.Clone()
|
||||
|
||||
' End If
|
||||
|
||||
AddHandler MyLookupControl.GotFocus, Sub(sender As Control, e As EventArgs)
|
||||
If DirectCast(MyLookupControl.Tag, ClassControlCreator.ControlMetadata).ReadOnly = False Then
|
||||
MyLookupControl.BackColor = Color.LightSteelBlue
|
||||
@@ -1186,11 +1219,6 @@ Public Class frmValidator
|
||||
End Sub
|
||||
End If
|
||||
|
||||
|
||||
|
||||
'Return filteredData
|
||||
'AddHandler lookup.Leave, AddressOf onLookUp0
|
||||
|
||||
Case "CHK"
|
||||
oControlInfo = "CHK#" & oControlInfo
|
||||
oMyControl = ControlCreator.CreateExisingCheckbox(oControlRow, False)
|
||||
@@ -1341,13 +1369,18 @@ Public Class frmValidator
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
Dim oTextbox As BaseEdit = sender
|
||||
Dim oMeta As ClassControlCreator.ControlMetadata = oTextbox.Tag
|
||||
|
||||
If Not oMeta.IsDirty Then
|
||||
oMeta.IsDirty = True
|
||||
MyValidationLogger.Debug($"TextBox [{oMeta.Name}] marked as dirty")
|
||||
Dim oTextbox As BaseEdit = TryCast(sender, BaseEdit)
|
||||
If oTextbox Is Nothing Then
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
Dim oMeta As ClassControlCreator.ControlMetadata = TryCast(oTextbox.Tag, ClassControlCreator.ControlMetadata)
|
||||
If oMeta Is Nothing OrElse oMeta.IsDirty Then
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
oMeta.IsDirty = True
|
||||
MyValidationLogger.Debug($"TextBox [{oMeta.Name}] marked as dirty")
|
||||
End Sub
|
||||
|
||||
Public Sub OnTextBoxKeyUp(sender As Object, e As KeyEventArgs)
|
||||
@@ -1618,22 +1651,32 @@ Public Class frmValidator
|
||||
If _FormLoaded = False Then
|
||||
Exit Sub
|
||||
End If
|
||||
Dim oRepositoryItem As RepositoryItemLookupControl3 = sender
|
||||
Dim oLookup As LookupControl3 = oRepositoryItem.OwnerEdit
|
||||
|
||||
Try
|
||||
If Not IsNothing(SelectedValues) Then
|
||||
If SelectedValues.Count >= 1 Then
|
||||
LookupControl_DependingControls(oLookup, SelectedValues)
|
||||
LookupControl_EnablingControls(oLookup, SelectedValues)
|
||||
LookupControl_DependingColumn(oLookup, SelectedValues)
|
||||
Else
|
||||
MyValidationLogger.Debug("Attention: onLookUpselectedValue: SelectedValues.Count <> 1 ")
|
||||
End If
|
||||
End If
|
||||
Catch ex As Exception
|
||||
MyValidationLogger.Error(ex)
|
||||
End Try
|
||||
If SelectedValues Is Nothing OrElse SelectedValues.Count < 1 Then
|
||||
MyValidationLogger.Debug("Attention: onLookUpselectedValue: SelectedValues.Count <> 1 ")
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
Dim oRepositoryItem As RepositoryItemLookupControl3 = sender
|
||||
Dim oLookup As LookupControl3 = Nothing
|
||||
|
||||
If _LookupControlsByRepository IsNot Nothing Then
|
||||
_LookupControlsByRepository.TryGetValue(oRepositoryItem, oLookup)
|
||||
End If
|
||||
|
||||
If oLookup Is Nothing Then
|
||||
oLookup = TryCast(oRepositoryItem.OwnerEdit, LookupControl3)
|
||||
End If
|
||||
|
||||
If oLookup Is Nothing Then
|
||||
MyValidationLogger.Warn("onLookUpselectedValue: LookupControl not found for RepositoryItem")
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
LookupControl_DependingControls(oLookup, SelectedValues)
|
||||
LookupControl_EnablingControls(oLookup, SelectedValues)
|
||||
LookupControl_DependingColumn(oLookup, SelectedValues)
|
||||
|
||||
Catch ex As Exception
|
||||
MyValidationLogger.Warn("Unexpected error in onLookUpselectedValue - " + ex.Message)
|
||||
MyValidationLogger.Error(ex)
|
||||
@@ -1647,22 +1690,35 @@ Public Class frmValidator
|
||||
|
||||
Try
|
||||
Dim oLookup As RepositoryItemLookupControl3 = sender
|
||||
' NEU: Dirty-Flag setzen - Suche den zugehörigen LookupControl
|
||||
For Each oControl In PanelValidatorControl.Controls
|
||||
If TypeOf oControl Is LookupControl3 Then
|
||||
Dim oLookupControl As LookupControl3 = DirectCast(oControl, LookupControl3)
|
||||
If oLookupControl.Properties Is oLookup Then
|
||||
Dim oMeta As ClassControlCreator.ControlMetadata = oLookupControl.Tag
|
||||
oMeta.IsDirty = True
|
||||
MyValidationLogger.Debug($"LookupControl [{oMeta.Name}] marked as dirty")
|
||||
Exit For
|
||||
Dim oLookupControl As LookupControl3 = Nothing
|
||||
|
||||
If _LookupControlsByRepository IsNot Nothing Then
|
||||
_LookupControlsByRepository.TryGetValue(oLookup, oLookupControl)
|
||||
End If
|
||||
|
||||
If oLookupControl Is Nothing Then
|
||||
For Each oControl In PanelValidatorControl.Controls
|
||||
If TypeOf oControl Is LookupControl3 Then
|
||||
Dim tmp As LookupControl3 = DirectCast(oControl, LookupControl3)
|
||||
If tmp.Properties Is oLookup Then
|
||||
oLookupControl = tmp
|
||||
Exit For
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
Next
|
||||
listChangedLookup.Add(oLookup.Name)
|
||||
Next
|
||||
End If
|
||||
|
||||
If oLookupControl IsNot Nothing Then
|
||||
Dim oMeta As ClassControlCreator.ControlMetadata = oLookupControl.Tag
|
||||
oMeta.IsDirty = True
|
||||
MyValidationLogger.Debug($"LookupControl [{oMeta.Name}] marked as dirty")
|
||||
listChangedLookup.Add(oLookupControl.Name)
|
||||
Else
|
||||
listChangedLookup.Add(oLookup.Name)
|
||||
End If
|
||||
|
||||
ControlCreator.GridTables_HandleControlValueChange(PanelValidatorControl, DT_COLUMNS_GRID_WITH_SQL_WITH_CTRL_PLACEHOLDER)
|
||||
'Verschiebt den Fokus auf das nächste Control
|
||||
|
||||
Dim oFound As Boolean = False
|
||||
For Each oString As String In listofControls
|
||||
If oString = oLookup.Name And oFound = False Then
|
||||
|
||||
Reference in New Issue
Block a user