This commit is contained in:
SchreiberM
2015-12-14 17:18:55 +01:00
parent 9591db4bf9
commit c83a77878c

View File

@@ -393,11 +393,16 @@ Public Class ClassControlValues
End Try End Try
End Sub End Sub
Public Shared Sub LoadControlValuesList(RecordID As Integer, FormID As Integer, controls As Control.ControlCollection) Public Shared Sub LoadControlValuesList(RecordID As Integer, FormID As Integer, controls As Control.ControlCollection)
Try Try
For Each Ctrl As Control In controls
Dim SW As Stopwatch = Stopwatch.StartNew()
For Each Ctrl As Control In controls
If TypeOf Ctrl Is ComboBox Then If TypeOf Ctrl Is ComboBox Then
Dim swInner As Stopwatch = Stopwatch.StartNew()
Dim Combobox = DirectCast(Ctrl, ComboBox) Dim Combobox = DirectCast(Ctrl, ComboBox)
Dim SQL As String = String.Format("SELECT SQL_COMMAND_1 FROM TBPMO_CONTROL WHERE FORM_ID = {0} AND NAME = '{1}'", CURRENT_FORM_ID, Ctrl.Name) Dim SQL As String = String.Format("SELECT SQL_COMMAND_1 FROM TBPMO_CONTROL WHERE FORM_ID = {0} AND NAME = '{1}'", CURRENT_FORM_ID, Ctrl.Name)
@@ -412,15 +417,26 @@ Public Class ClassControlValues
SQL2 = SQL2.ToString.Replace("@PARENTRECORD_ID", CURRENT_PARENTID) SQL2 = SQL2.ToString.Replace("@PARENTRECORD_ID", CURRENT_PARENTID)
' If LogErrorsOnly = False Then ClassLogger.Add(">> SQL Combobox: " & cmbSql, False) ' If LogErrorsOnly = False Then ClassLogger.Add(">> SQL Combobox: " & cmbSql, False)
End If End If
Dim DT_Combobox As DataTable = ClassDatabase.Return_Datatable(SQL2)
Dim controlId As Integer = GetControlID_for_Name(Combobox.Name, FormID)
'Dim DT_Combobox As DataTable = ClassDatabase.Return_Datatable(SQL2)
' Zuerst versuchen, DataTable aus dem Cache zu laden
Dim DT_Combobox As DataTable = ClassControlValueCache.LoadFromCache(FormID, controlId)
' Wenn DataTable nicht im Cache vorhanden, aus der Datenbank laden
If IsNothing(DT_Combobox) Then
DT_Combobox = ClassDatabase.Return_Datatable(SQL2)
End If
If DT_Combobox Is Nothing = False Then If DT_Combobox Is Nothing = False Then
If DT_Combobox.Rows.Count > 0 Then If DT_Combobox.Rows.Count > 0 Then
Combobox.DataSource = DT_Combobox Combobox.DataSource = DT_Combobox
Combobox.DisplayMember = DT_Combobox.Columns(1).ColumnName Combobox.DisplayMember = DT_Combobox.Columns(1).ColumnName
Combobox.ValueMember = DT_Combobox.Columns(0).ColumnName Combobox.ValueMember = DT_Combobox.Columns(0).ColumnName
Combobox.AutoCompleteMode = AutoCompleteMode.Append
Combobox.AutoCompleteSource = AutoCompleteSource.ListItems ClassControlValueCache.SaveToCache(FormID, controlId, DT_Combobox)
End If End If
Dim iWidestWidth As Integer = 300 Dim iWidestWidth As Integer = 300
For Each row As DataRow In DT_Combobox.Rows For Each row As DataRow In DT_Combobox.Rows
'Die BReite der DropDown-Lsit anpassen 'Die BReite der DropDown-Lsit anpassen
@@ -432,20 +448,29 @@ Public Class ClassControlValues
End Using End Using
' control.Items.Add(row.Item(0).ToString) ' control.Items.Add(row.Item(0).ToString)
Next Next
If iWidestWidth > 300 Then If iWidestWidth > 300 Then
Combobox.DropDownWidth = Math.Max(iWidestWidth, Combobox.Width) Combobox.DropDownWidth = Math.Max(iWidestWidth, Combobox.Width)
End If End If
LoadControlValue(RecordID, GetControlID_for_Name(Combobox.Name, FormID), Ctrl)
LoadControlValue(RecordID, controlId, Ctrl)
End If End If
swInner.Stop()
Console.WriteLine("Loading List for Control {0} took {1} milliseconds", Ctrl.Name, swInner.ElapsedMilliseconds)
End If End If
Next Next
SW.Stop()
Console.WriteLine("LoadControlValuesList took {0} milliseconds to load", SW.ElapsedMilliseconds)
Catch ex As Exception Catch ex As Exception
MsgBox("Unexpected Error in LoadControlValuesList:" & vbNewLine & ex.Message, MsgBoxStyle.Critical) MsgBox("Unexpected Error in LoadControlValuesList:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
End Try End Try
End Sub End Sub