WIP move grid functions to extra class
This commit is contained in:
parent
22691f30c4
commit
12c36eeb92
@ -155,19 +155,6 @@ Public Class ClassControlCreator
|
|||||||
|
|
||||||
' ----------------------- NEW CONTROLS -----------------------
|
' ----------------------- NEW CONTROLS -----------------------
|
||||||
|
|
||||||
'Public Function CreateNewTextBox(location As Point) As TextBox
|
|
||||||
' Dim control As New TextBox With {
|
|
||||||
' .Name = $"{PREFIX_TEXTBOX}_{clsTools.ShortGuid()}",
|
|
||||||
' .Size = New Size(DEFAULT_WIDTH, DEFAULT_HEIGHT),
|
|
||||||
' .Location = location,
|
|
||||||
' .ReadOnly = True,
|
|
||||||
' .BackColor = Color.White,
|
|
||||||
' .Cursor = Cursors.Hand
|
|
||||||
' }
|
|
||||||
|
|
||||||
' Return control
|
|
||||||
'End Function
|
|
||||||
|
|
||||||
Public Function CreateNewTextBox(location As Point) As TextEdit
|
Public Function CreateNewTextBox(location As Point) As TextEdit
|
||||||
Dim control As New TextEdit With {
|
Dim control As New TextEdit With {
|
||||||
.Name = $"{PREFIX_TEXTBOX}_{clsTools.ShortGuid()}",
|
.Name = $"{PREFIX_TEXTBOX}_{clsTools.ShortGuid()}",
|
||||||
@ -264,9 +251,9 @@ Public Class ClassControlCreator
|
|||||||
.Name = $"{PREFIX_TABLE}_{clsTools.ShortGuid}",
|
.Name = $"{PREFIX_TABLE}_{clsTools.ShortGuid}",
|
||||||
.Size = New Size(DEFAULT_WIDTH, DEFAULT_HEIGHT_TABLE),
|
.Size = New Size(DEFAULT_WIDTH, DEFAULT_HEIGHT_TABLE),
|
||||||
.Cursor = Cursors.Hand,
|
.Cursor = Cursors.Hand,
|
||||||
.Location = location
|
.Location = location,
|
||||||
|
.UseEmbeddedNavigator = True
|
||||||
}
|
}
|
||||||
oControl.UseEmbeddedNavigator = True
|
|
||||||
oControl.ForceInitialize()
|
oControl.ForceInitialize()
|
||||||
Dim oView As GridView = oControl.DefaultView
|
Dim oView As GridView = oControl.DefaultView
|
||||||
oView.OptionsView.ShowGroupPanel = False
|
oView.OptionsView.ShowGroupPanel = False
|
||||||
@ -302,37 +289,6 @@ Public Class ClassControlCreator
|
|||||||
|
|
||||||
' ----------------------- EXISITING CONTROLS -----------------------
|
' ----------------------- EXISITING CONTROLS -----------------------
|
||||||
|
|
||||||
'Public Function CreateExistingTextbox(oControlRow As DataRow, designMode As Boolean) As TextBox
|
|
||||||
' Try
|
|
||||||
' Dim control As TextBox = CreateBaseControl(New TextBox(), oControlRow, designMode)
|
|
||||||
|
|
||||||
' control.BackColor = Color.White
|
|
||||||
|
|
||||||
' If oControlRow.Item("HEIGHT") > 27 Then
|
|
||||||
' control.Multiline = True
|
|
||||||
|
|
||||||
' End If
|
|
||||||
|
|
||||||
' control.Height = oControlRow.Item("HEIGHT")
|
|
||||||
' control.Width = oControlRow.Item("WIDTH")
|
|
||||||
|
|
||||||
' If Not designMode Then
|
|
||||||
' control.AcceptsReturn = True
|
|
||||||
' control.ReadOnly = oControlRow.Item("READ_ONLY")
|
|
||||||
' control.TabStop = Not oControlRow.Item("READ_ONLY")
|
|
||||||
' control.BackColor = IIf(oControlRow.Item("READ_ONLY"), Color.LightGray, Color.White)
|
|
||||||
' control.ScrollBars = ScrollBars.Vertical
|
|
||||||
' Else
|
|
||||||
' control.ReadOnly = True
|
|
||||||
' End If
|
|
||||||
|
|
||||||
' Return control
|
|
||||||
' Catch ex As Exception
|
|
||||||
' Logger.Error(ex)
|
|
||||||
' End Try
|
|
||||||
|
|
||||||
'End Function
|
|
||||||
|
|
||||||
Public Function CreateExistingTextbox(oControlRow As DataRow, designMode As Boolean) As BaseEdit
|
Public Function CreateExistingTextbox(oControlRow As DataRow, designMode As Boolean) As BaseEdit
|
||||||
Try
|
Try
|
||||||
Dim oHeight = oControlRow.ItemEx("HEIGHT", 0)
|
Dim oHeight = oControlRow.ItemEx("HEIGHT", 0)
|
||||||
@ -349,17 +305,11 @@ Public Class ClassControlCreator
|
|||||||
oControl = CreateBaseControl(New TextEdit(), oControlRow, designMode)
|
oControl = CreateBaseControl(New TextEdit(), oControlRow, designMode)
|
||||||
End If
|
End If
|
||||||
|
|
||||||
'Dim oControl As TextEdit = CreateBaseControl(New TextEdit(), oControlRow, designMode)
|
|
||||||
Dim oMeta As ControlMetadata = oControl.Tag
|
Dim oMeta As ControlMetadata = oControl.Tag
|
||||||
|
|
||||||
oControl.BackColor = Color.White
|
oControl.BackColor = Color.White
|
||||||
oMeta.BackColor = Color.White
|
oMeta.BackColor = Color.White
|
||||||
|
|
||||||
' TODO: Add separate function for MultilineEdit
|
|
||||||
'If oControlRow.Item("HEIGHT") > 27 Then
|
|
||||||
' control.Multiline = True
|
|
||||||
'End If
|
|
||||||
|
|
||||||
oControl.Height = oHeight
|
oControl.Height = oHeight
|
||||||
oControl.Width = oWidth
|
oControl.Width = oWidth
|
||||||
|
|
||||||
@ -380,10 +330,6 @@ Public Class ClassControlCreator
|
|||||||
oControl.Properties.EditFormat.FormatType = FormatType.Custom
|
oControl.Properties.EditFormat.FormatType = FormatType.Custom
|
||||||
oControl.Properties.EditFormat.FormatString = ClassFormat.GetFormatString(oFormatString)
|
oControl.Properties.EditFormat.FormatString = ClassFormat.GetFormatString(oFormatString)
|
||||||
End If
|
End If
|
||||||
|
|
||||||
'TODO: Find alternatives for TextEdit
|
|
||||||
'control.ScrollBars = ScrollBars.Vertical
|
|
||||||
'control.AcceptsReturn = True
|
|
||||||
Else
|
Else
|
||||||
oControl.ReadOnly = True
|
oControl.ReadOnly = True
|
||||||
End If
|
End If
|
||||||
@ -391,6 +337,7 @@ Public Class ClassControlCreator
|
|||||||
Return oControl
|
Return oControl
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
Logger.Error(ex)
|
Logger.Error(ex)
|
||||||
|
Return Nothing
|
||||||
End Try
|
End Try
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
@ -407,6 +354,7 @@ Public Class ClassControlCreator
|
|||||||
|
|
||||||
Return control
|
Return control
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
Public Function CreateExistingButton(row As DataRow, designMode As Boolean) As Button
|
Public Function CreateExistingButton(row As DataRow, designMode As Boolean) As Button
|
||||||
Dim oControl As Button = CreateBaseControl(New Button(), row, designMode)
|
Dim oControl As Button = CreateBaseControl(New Button(), row, designMode)
|
||||||
|
|
||||||
@ -524,9 +472,9 @@ Public Class ClassControlCreator
|
|||||||
End Function
|
End Function
|
||||||
|
|
||||||
Public Function CreateExistingGridControl(row As DataRow, DT_MY_COLUMNS As DataTable, designMode As Boolean) As GridControl
|
Public Function CreateExistingGridControl(row As DataRow, DT_MY_COLUMNS As DataTable, designMode As Boolean) As GridControl
|
||||||
|
Dim oGridControlCreator = New ControlCreator.GridControl(LogConfig, GridTables)
|
||||||
Dim oControl As GridControl = CreateBaseControl(New GridControl(), row, designMode)
|
Dim oControl As GridControl = CreateBaseControl(New GridControl(), row, designMode)
|
||||||
Dim oControlId = DirectCast(oControl.Tag, ControlMetadata).Guid
|
Dim oControlId = DirectCast(oControl.Tag, ControlMetadata).Guid
|
||||||
Dim oDatatable As New DataTable
|
|
||||||
Dim oView As GridView
|
Dim oView As GridView
|
||||||
|
|
||||||
oControl.ForceInitialize()
|
oControl.ForceInitialize()
|
||||||
@ -593,64 +541,8 @@ Public Class ClassControlCreator
|
|||||||
GridTables.Add(oControlId, New Dictionary(Of String, RepositoryItem)())
|
GridTables.Add(oControlId, New Dictionary(Of String, RepositoryItem)())
|
||||||
End If
|
End If
|
||||||
|
|
||||||
For Each oRow As DataRow In DT_MY_COLUMNS.Rows
|
Dim oDataTable = oGridControlCreator.CreateGridColumns(DT_MY_COLUMNS)
|
||||||
' Create Columns in Datatable
|
GridTables = oGridControlCreator.FillGridTables(DT_MY_COLUMNS, oControlId, oControl.Name)
|
||||||
|
|
||||||
Dim oColumn = New DataColumn() With {
|
|
||||||
.ColumnName = oRow.Item("SPALTENNAME"),
|
|
||||||
.Caption = oRow.Item("SPALTEN_HEADER_LANG"),
|
|
||||||
.ReadOnly = False
|
|
||||||
}
|
|
||||||
Select Case oRow.Item("TYPE_COLUMN")
|
|
||||||
Case CONTROL_TYPE_TEXT
|
|
||||||
oColumn.DataType = GetType(String)
|
|
||||||
Case CONTROL_TYPE_INTEGER
|
|
||||||
oColumn.DataType = GetType(Integer)
|
|
||||||
Case CONTROL_TYPE_DOUBLE
|
|
||||||
oColumn.DataType = GetType(Double)
|
|
||||||
Case CONTROL_TYPE_CURRENCY
|
|
||||||
oColumn.DataType = GetType(Double)
|
|
||||||
Case CONTROL_TYPE_BOOLEAN
|
|
||||||
oColumn.DataType = GetType(Boolean)
|
|
||||||
Case Else
|
|
||||||
oColumn.DataType = GetType(String)
|
|
||||||
End Select
|
|
||||||
|
|
||||||
oDatatable.Columns.Add(oColumn)
|
|
||||||
|
|
||||||
' Fetch and cache Combobox results
|
|
||||||
Dim oConnectionId As Integer = NotNull(oRow.Item("CONNECTION_ID"), 0)
|
|
||||||
Dim oSqlCommand As String = NotNull(oRow.Item("SQL_COMMAND"), "")
|
|
||||||
|
|
||||||
If oConnectionId > 0 And oSqlCommand <> "" Then
|
|
||||||
Try
|
|
||||||
Dim oComboboxDataTable As DataTable = Nothing
|
|
||||||
Dim oColumnName As String = oRow.Item("SPALTENNAME")
|
|
||||||
Logger.Debug("Working on SQL for Column[{0}]...", oColumnName)
|
|
||||||
If Not clsPatterns.HasComplexPatterns(oSqlCommand) Then
|
|
||||||
Logger.Debug("SQL has no complex patterns!")
|
|
||||||
'oComboboxDataTable = ClassDatabase.Return_Datatable_ConId(oSqlCommand, oConnectionId)
|
|
||||||
oComboboxDataTable = DatabaseFallback.GetDatatable(New GetDatatableOptions(oSqlCommand, DatabaseType.ECM) With {
|
|
||||||
.ConnectionId = oConnectionId
|
|
||||||
})
|
|
||||||
Else
|
|
||||||
Logger.Debug("...has complex patterns!!")
|
|
||||||
End If
|
|
||||||
|
|
||||||
Dim oRepositoryItem = GridTables_GetRepositoryItemForColumn(oColumnName, oComboboxDataTable, oRow.Item("ADVANCED_LOOKUP"))
|
|
||||||
|
|
||||||
If GridTables.Item(oControlId).ContainsKey(oColumnName) Then
|
|
||||||
GridTables.Item(oControlId).Item(oColumnName) = oRepositoryItem
|
|
||||||
Else
|
|
||||||
GridTables.Item(oControlId).Add(oColumnName, oRepositoryItem)
|
|
||||||
End If
|
|
||||||
Catch ex As Exception
|
|
||||||
Logger.Warn("Could not load data for column {0} in control {1}", oRow.Item("SPALTENNAME"), oControl.Name)
|
|
||||||
Logger.Error(ex)
|
|
||||||
End Try
|
|
||||||
End If
|
|
||||||
Next
|
|
||||||
|
|
||||||
oView.PopulateColumns(oDatatable)
|
oView.PopulateColumns(oDatatable)
|
||||||
oControl.DataSource = oDatatable
|
oControl.DataSource = oDatatable
|
||||||
oControl.RefreshDataSource()
|
oControl.RefreshDataSource()
|
||||||
@ -679,79 +571,80 @@ Public Class ClassControlCreator
|
|||||||
End Try
|
End Try
|
||||||
End If
|
End If
|
||||||
|
|
||||||
|
oGridControlCreator.ConfigureViewColumns(DT_MY_COLUMNS, oView)
|
||||||
|
|
||||||
Dim oShouldDisplayFooter As Boolean = False
|
' Dim oShouldDisplayFooter As Boolean = False
|
||||||
|
'
|
||||||
|
'For Each oCol As GridColumn In oView.Columns
|
||||||
|
' Dim oColumnData As DataRow = DT_MY_COLUMNS.
|
||||||
|
' Select($"SPALTENNAME = '{oCol.FieldName}'").
|
||||||
|
' FirstOrDefault()
|
||||||
|
|
||||||
For Each oCol As GridColumn In oView.Columns
|
' If oColumnData Is Nothing Then
|
||||||
Dim oColumnData As DataRow = DT_MY_COLUMNS.
|
' Continue For
|
||||||
Select($"SPALTENNAME = '{oCol.FieldName}'").
|
' End If
|
||||||
FirstOrDefault()
|
|
||||||
|
|
||||||
If oColumnData Is Nothing Then
|
' Dim oSequence As Integer = oColumnData.Item("SEQUENCE")
|
||||||
Continue For
|
' oCol.VisibleIndex = oSequence
|
||||||
End If
|
|
||||||
|
|
||||||
Dim oSequence As Integer = oColumnData.Item("SEQUENCE")
|
' Dim oColumnType As String = oColumnData.Item("TYPE_COLUMN")
|
||||||
oCol.VisibleIndex = oSequence
|
|
||||||
|
|
||||||
Dim oColumnType As String = oColumnData.Item("TYPE_COLUMN")
|
' Select Case oColumnType
|
||||||
|
' Case "INTEGER"
|
||||||
|
' oCol.DisplayFormat.FormatType = FormatType.Custom
|
||||||
|
' oCol.DisplayFormat.FormatString = "N0"
|
||||||
|
|
||||||
Select Case oColumnType
|
' Case "DOUBLE"
|
||||||
Case "INTEGER"
|
' oCol.DisplayFormat.FormatType = FormatType.Custom
|
||||||
oCol.DisplayFormat.FormatType = FormatType.Custom
|
' oCol.DisplayFormat.FormatString = "N2"
|
||||||
oCol.DisplayFormat.FormatString = "N0"
|
|
||||||
|
|
||||||
Case "DOUBLE"
|
' Case "CURRENCY"
|
||||||
oCol.DisplayFormat.FormatType = FormatType.Custom
|
' oCol.DisplayFormat.FormatType = FormatType.Custom
|
||||||
oCol.DisplayFormat.FormatString = "N2"
|
' oCol.DisplayFormat.FormatString = "C2"
|
||||||
|
' End Select
|
||||||
|
|
||||||
Case "CURRENCY"
|
' Dim oSummaryFunction As String = oColumnData.Item("SUMMARY_FUNCTION")
|
||||||
oCol.DisplayFormat.FormatType = FormatType.Custom
|
|
||||||
oCol.DisplayFormat.FormatString = "C2"
|
|
||||||
End Select
|
|
||||||
|
|
||||||
Dim oSummaryFunction As String = oColumnData.Item("SUMMARY_FUNCTION")
|
' Select Case oSummaryFunction
|
||||||
|
' Case AGGREGATE_TOTAL_INTEGER
|
||||||
|
' oCol.SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Sum
|
||||||
|
' oCol.SummaryItem.DisplayFormat = "SUM: {0:N0}"
|
||||||
|
' oShouldDisplayFooter = True
|
||||||
|
|
||||||
Select Case oSummaryFunction
|
' Case AGGREGATE_TOTAL_FLOAT
|
||||||
Case AGGREGATE_TOTAL_INTEGER
|
' oCol.SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Sum
|
||||||
oCol.SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Sum
|
' oCol.SummaryItem.DisplayFormat = "SUM: {0:N2}"
|
||||||
oCol.SummaryItem.DisplayFormat = "SUM: {0:N0}"
|
' oShouldDisplayFooter = True
|
||||||
oShouldDisplayFooter = True
|
|
||||||
|
|
||||||
Case AGGREGATE_TOTAL_FLOAT
|
' Case AGGREGATE_TOTAL_CURRENCY
|
||||||
oCol.SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Sum
|
' oCol.SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Sum
|
||||||
oCol.SummaryItem.DisplayFormat = "SUM: {0:N2}"
|
' oCol.SummaryItem.DisplayFormat = "SUM: {0:C2}"
|
||||||
oShouldDisplayFooter = True
|
' oShouldDisplayFooter = True
|
||||||
|
|
||||||
Case AGGREGATE_TOTAL_CURRENCY
|
' Case AGGREGATE_TOTAL_AVG
|
||||||
oCol.SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Sum
|
' oCol.SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Average
|
||||||
oCol.SummaryItem.DisplayFormat = "SUM: {0:C2}"
|
' oCol.SummaryItem.DisplayFormat = "AVG: {0}"
|
||||||
oShouldDisplayFooter = True
|
' oShouldDisplayFooter = True
|
||||||
|
|
||||||
Case AGGREGATE_TOTAL_AVG
|
' Case AGGREGATE_TOTAL_MAX
|
||||||
oCol.SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Average
|
' oCol.SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Max
|
||||||
oCol.SummaryItem.DisplayFormat = "AVG: {0}"
|
' oCol.SummaryItem.DisplayFormat = "MAX: {0}"
|
||||||
oShouldDisplayFooter = True
|
' oShouldDisplayFooter = True
|
||||||
|
|
||||||
Case AGGREGATE_TOTAL_MAX
|
' Case AGGREGATE_TOTAL_MIN
|
||||||
oCol.SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Max
|
' oCol.SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Min
|
||||||
oCol.SummaryItem.DisplayFormat = "MAX: {0}"
|
' oCol.SummaryItem.DisplayFormat = "MIN: {0}"
|
||||||
oShouldDisplayFooter = True
|
' oShouldDisplayFooter = True
|
||||||
|
|
||||||
Case AGGREGATE_TOTAL_MIN
|
' Case AGGREGATE_TOTAL_COUNT
|
||||||
oCol.SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Min
|
' oCol.SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Count
|
||||||
oCol.SummaryItem.DisplayFormat = "MIN: {0}"
|
' oCol.SummaryItem.DisplayFormat = "NUM: {0}"
|
||||||
oShouldDisplayFooter = True
|
' oShouldDisplayFooter = True
|
||||||
|
|
||||||
Case AGGREGATE_TOTAL_COUNT
|
' End Select
|
||||||
oCol.SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Count
|
'Next
|
||||||
oCol.SummaryItem.DisplayFormat = "NUM: {0}"
|
'
|
||||||
oShouldDisplayFooter = True
|
' oView.OptionsView.ShowFooter = oShouldDisplayFooter
|
||||||
|
|
||||||
End Select
|
|
||||||
Next
|
|
||||||
|
|
||||||
oView.OptionsView.ShowFooter = oShouldDisplayFooter
|
|
||||||
|
|
||||||
AddHandler oView.InitNewRow, Sub(sender As Object, e As InitNewRowEventArgs)
|
AddHandler oView.InitNewRow, Sub(sender As Object, e As InitNewRowEventArgs)
|
||||||
Try
|
Try
|
||||||
@ -817,18 +710,7 @@ Public Class ClassControlCreator
|
|||||||
AddHandler oView.ShowingEditor, AddressOf View_ShowingEditor
|
AddHandler oView.ShowingEditor, AddressOf View_ShowingEditor
|
||||||
AddHandler oView.ShownEditor, AddressOf View_ShownEditor
|
AddHandler oView.ShownEditor, AddressOf View_ShownEditor
|
||||||
AddHandler oView.ValidateRow, AddressOf View_ValidateRow
|
AddHandler oView.ValidateRow, AddressOf View_ValidateRow
|
||||||
AddHandler oControl.LostFocus, Sub(sender As GridControl, e As EventArgs)
|
AddHandler oControl.LostFocus, AddressOf Control_LostFocus
|
||||||
Dim oView2 As GridView = sender.FocusedView
|
|
||||||
|
|
||||||
' 19.08.2022:
|
|
||||||
' Calling UpdateCurrentRow when newRowModified Is true
|
|
||||||
' leads to some weird jumping of focus in the current cell.
|
|
||||||
' This seems to fix it.
|
|
||||||
If newRowModified = False Then
|
|
||||||
oView2.UpdateCurrentRow()
|
|
||||||
End If
|
|
||||||
|
|
||||||
End Sub
|
|
||||||
|
|
||||||
' 08.11.2021: Fix editor being empty on first open
|
' 08.11.2021: Fix editor being empty on first open
|
||||||
oView.FocusInvalidRow()
|
oView.FocusInvalidRow()
|
||||||
@ -838,6 +720,18 @@ Public Class ClassControlCreator
|
|||||||
|
|
||||||
Private newRowModified As Boolean = False
|
Private newRowModified As Boolean = False
|
||||||
|
|
||||||
|
Private Sub Control_LostFocus(sender As GridControl, e As EventArgs)
|
||||||
|
Dim oView2 As GridView = sender.FocusedView
|
||||||
|
|
||||||
|
' 19.08.2022:
|
||||||
|
' Calling UpdateCurrentRow when newRowModified Is true
|
||||||
|
' leads to some weird jumping of focus in the current cell.
|
||||||
|
' This seems to fix it.
|
||||||
|
If newRowModified = False Then
|
||||||
|
oView2.UpdateCurrentRow()
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
Private Sub View_ShowingEditor(sender As Object, e As CancelEventArgs)
|
Private Sub View_ShowingEditor(sender As Object, e As CancelEventArgs)
|
||||||
Dim view As GridView = TryCast(sender, GridView)
|
Dim view As GridView = TryCast(sender, GridView)
|
||||||
Logger.Debug("Showing editor.")
|
Logger.Debug("Showing editor.")
|
||||||
|
|||||||
21
app/TaskFlow/ControlCreator/Constants.vb
Normal file
21
app/TaskFlow/ControlCreator/Constants.vb
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
Namespace ControlCreator
|
||||||
|
Public Class Constants
|
||||||
|
Public Const CONTROL_TYPE_TEXT = "TEXT"
|
||||||
|
Public Const CONTROL_TYPE_INTEGER = "INTEGER"
|
||||||
|
Public Const CONTROL_TYPE_BOOLEAN = "BOOLEAN"
|
||||||
|
Public Const CONTROL_TYPE_DOUBLE = "DOUBLE"
|
||||||
|
Public Const CONTROL_TYPE_CURRENCY = "CURRENCY"
|
||||||
|
Public Const CONTROL_TYPE_DATE = "DATE"
|
||||||
|
Public Const CONTROL_TYPE_DATETIME = "DATETIME"
|
||||||
|
|
||||||
|
Public Const AGGREGATE_NONE = "NONE"
|
||||||
|
Public Const AGGREGATE_TOTAL_INTEGER = "TOTAL_INTEGER"
|
||||||
|
Public Const AGGREGATE_TOTAL_FLOAT = "TOTAL_FLOAT"
|
||||||
|
Public Const AGGREGATE_TOTAL_CURRENCY = "TOTAL_CURRENCY"
|
||||||
|
Public Const AGGREGATE_TOTAL_MIN = "TOTAL_MIN"
|
||||||
|
Public Const AGGREGATE_TOTAL_MAX = "TOTAL_MAX"
|
||||||
|
Public Const AGGREGATE_TOTAL_AVG = "TOTAL_AVG"
|
||||||
|
Public Const AGGREGATE_TOTAL_COUNT = "TOTAL_COUNT"
|
||||||
|
End Class
|
||||||
|
|
||||||
|
End Namespace
|
||||||
215
app/TaskFlow/ControlCreator/GridControl.vb
Normal file
215
app/TaskFlow/ControlCreator/GridControl.vb
Normal file
@ -0,0 +1,215 @@
|
|||||||
|
Imports DevExpress.Utils
|
||||||
|
Imports DevExpress.XtraEditors
|
||||||
|
Imports DevExpress.XtraEditors.Repository
|
||||||
|
Imports DevExpress.XtraGrid.Columns
|
||||||
|
Imports DevExpress.XtraGrid.Views.Grid
|
||||||
|
Imports DigitalData.Controls.LookupGrid
|
||||||
|
Imports DigitalData.Modules.EDMI.API.Constants
|
||||||
|
Imports DigitalData.Modules.EDMI.API.DatabaseWithFallback
|
||||||
|
Imports DigitalData.Modules.Logging
|
||||||
|
Imports DigitalData.Modules.Base
|
||||||
|
Imports System.ComponentModel
|
||||||
|
|
||||||
|
Namespace ControlCreator
|
||||||
|
Public Class GridControl
|
||||||
|
Private ReadOnly _LogConfig As LogConfig
|
||||||
|
Private ReadOnly _GridTables As Dictionary(Of Integer, Dictionary(Of String, RepositoryItem))
|
||||||
|
|
||||||
|
Public Sub New(pLogConfig As LogConfig, pGridTables As Dictionary(Of Integer, Dictionary(Of String, RepositoryItem)))
|
||||||
|
_LogConfig = pLogConfig
|
||||||
|
_GridTables = pGridTables
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Public Function CreateGridColumns(pColumnTable As DataTable) As DataTable
|
||||||
|
Dim oDataTable As New DataTable
|
||||||
|
|
||||||
|
For Each oRow As DataRow In pColumnTable.Rows
|
||||||
|
' Create Columns in Datatable
|
||||||
|
|
||||||
|
Dim oColumn = New DataColumn() With {
|
||||||
|
.ColumnName = oRow.Item("SPALTENNAME"),
|
||||||
|
.Caption = oRow.Item("SPALTEN_HEADER_LANG"),
|
||||||
|
.ReadOnly = False
|
||||||
|
}
|
||||||
|
Select Case oRow.Item("TYPE_COLUMN")
|
||||||
|
Case Constants.CONTROL_TYPE_TEXT
|
||||||
|
oColumn.DataType = GetType(String)
|
||||||
|
Case Constants.CONTROL_TYPE_INTEGER
|
||||||
|
oColumn.DataType = GetType(Integer)
|
||||||
|
Case Constants.CONTROL_TYPE_DOUBLE
|
||||||
|
oColumn.DataType = GetType(Double)
|
||||||
|
Case Constants.CONTROL_TYPE_CURRENCY
|
||||||
|
oColumn.DataType = GetType(Double)
|
||||||
|
Case Constants.CONTROL_TYPE_BOOLEAN
|
||||||
|
oColumn.DataType = GetType(Boolean)
|
||||||
|
Case Else
|
||||||
|
oColumn.DataType = GetType(String)
|
||||||
|
End Select
|
||||||
|
|
||||||
|
oDataTable.Columns.Add(oColumn)
|
||||||
|
Next
|
||||||
|
|
||||||
|
Return oDataTable
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Function FillGridTables(pColumnTable As DataTable, pControlId As Integer, pControlName As String) As Dictionary(Of Integer, Dictionary(Of String, RepositoryItem))
|
||||||
|
For Each oRow As DataRow In pColumnTable.Rows
|
||||||
|
' Fetch and cache Combobox results
|
||||||
|
Dim oConnectionId As Integer = oRow.ItemEx("CONNECTION_ID", 0)
|
||||||
|
Dim oSqlCommand As String = oRow.ItemEx("SQL_COMMAND", "")
|
||||||
|
|
||||||
|
If oConnectionId > 0 And oSqlCommand <> "" Then
|
||||||
|
Try
|
||||||
|
Dim oComboboxDataTable As DataTable = Nothing
|
||||||
|
Dim oColumnName As String = oRow.Item("SPALTENNAME")
|
||||||
|
LOGGER.Debug("Working on SQL for Column[{0}]...", oColumnName)
|
||||||
|
If Not clsPatterns.HasComplexPatterns(oSqlCommand) Then
|
||||||
|
LOGGER.Debug("SQL has no complex patterns!")
|
||||||
|
'oComboboxDataTable = ClassDatabase.Return_Datatable_ConId(oSqlCommand, oConnectionId)
|
||||||
|
oComboboxDataTable = DatabaseFallback.GetDatatable(New GetDatatableOptions(oSqlCommand, DatabaseType.ECM) With {
|
||||||
|
.ConnectionId = oConnectionId
|
||||||
|
})
|
||||||
|
Else
|
||||||
|
LOGGER.Debug("...has complex patterns!!")
|
||||||
|
End If
|
||||||
|
|
||||||
|
Dim oRepositoryItem = GridTables_GetRepositoryItemForColumn(oColumnName, oComboboxDataTable, oRow.Item("ADVANCED_LOOKUP"))
|
||||||
|
|
||||||
|
If _GridTables.Item(pControlId).ContainsKey(oColumnName) Then
|
||||||
|
_GridTables.Item(pControlId).Item(oColumnName) = oRepositoryItem
|
||||||
|
Else
|
||||||
|
_GridTables.Item(pControlId).Add(oColumnName, oRepositoryItem)
|
||||||
|
End If
|
||||||
|
Catch ex As Exception
|
||||||
|
LOGGER.Warn("Could not load data for column {0} in control {1}", oRow.Item("SPALTENNAME"), pControlName)
|
||||||
|
LOGGER.Error(ex)
|
||||||
|
End Try
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
|
||||||
|
Return _GridTables
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Private Function GridTables_GetRepositoryItemForColumn(pColumnName As String, pDataTable As DataTable, pIsAdvancedLookup As Boolean) As RepositoryItem
|
||||||
|
If pIsAdvancedLookup Then
|
||||||
|
|
||||||
|
Dim oEditor = New RepositoryItemLookupControl3
|
||||||
|
|
||||||
|
If pDataTable IsNot Nothing Then
|
||||||
|
oEditor.DisplayMember = pDataTable.Columns.Item(0).ColumnName
|
||||||
|
oEditor.ValueMember = pDataTable.Columns.Item(0).ColumnName
|
||||||
|
oEditor.DataSource = pDataTable
|
||||||
|
End If
|
||||||
|
|
||||||
|
Return oEditor
|
||||||
|
Else
|
||||||
|
Dim oEditor = New RepositoryItemComboBox()
|
||||||
|
Dim oItems As New List(Of String)
|
||||||
|
|
||||||
|
AddHandler oEditor.Validating, Sub(_sender As ComboBoxEdit, _e As CancelEventArgs)
|
||||||
|
If oItems.Contains(_sender.EditValue) Then
|
||||||
|
_e.Cancel = False
|
||||||
|
Else
|
||||||
|
_e.Cancel = True
|
||||||
|
End If
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
If pDataTable IsNot Nothing Then
|
||||||
|
For Each oRow2 As DataRow In pDataTable.Rows
|
||||||
|
Dim oValue = oRow2.Item(0)
|
||||||
|
|
||||||
|
Try
|
||||||
|
If oRow2.ItemArray.Length > 1 Then
|
||||||
|
oValue &= $" | {oRow2.Item(1)}"
|
||||||
|
End If
|
||||||
|
Catch ex As Exception
|
||||||
|
End Try
|
||||||
|
|
||||||
|
oEditor.Items.Add(oValue)
|
||||||
|
oItems.Add(oValue)
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
|
||||||
|
Return oEditor
|
||||||
|
End If
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Sub ConfigureViewColumns(pColumnTable As DataTable, pGridView As GridView)
|
||||||
|
Dim oShouldDisplayFooter As Boolean = False
|
||||||
|
|
||||||
|
For Each oCol As GridColumn In pGridView.Columns
|
||||||
|
Dim oColumnData As DataRow = pColumnTable.
|
||||||
|
Select($"SPALTENNAME = '{oCol.FieldName}'").
|
||||||
|
FirstOrDefault()
|
||||||
|
|
||||||
|
If oColumnData Is Nothing Then
|
||||||
|
Continue For
|
||||||
|
End If
|
||||||
|
|
||||||
|
Dim oSequence As Integer = oColumnData.Item("SEQUENCE")
|
||||||
|
oCol.VisibleIndex = oSequence
|
||||||
|
|
||||||
|
Dim oColumnType As String = oColumnData.Item("TYPE_COLUMN")
|
||||||
|
|
||||||
|
Select Case oColumnType
|
||||||
|
Case "INTEGER"
|
||||||
|
oCol.DisplayFormat.FormatType = FormatType.Custom
|
||||||
|
oCol.DisplayFormat.FormatString = "N0"
|
||||||
|
|
||||||
|
Case "DOUBLE"
|
||||||
|
oCol.DisplayFormat.FormatType = FormatType.Custom
|
||||||
|
oCol.DisplayFormat.FormatString = "N2"
|
||||||
|
|
||||||
|
Case "CURRENCY"
|
||||||
|
oCol.DisplayFormat.FormatType = FormatType.Custom
|
||||||
|
oCol.DisplayFormat.FormatString = "C2"
|
||||||
|
End Select
|
||||||
|
|
||||||
|
Dim oSummaryFunction As String = oColumnData.Item("SUMMARY_FUNCTION")
|
||||||
|
|
||||||
|
Select Case oSummaryFunction
|
||||||
|
Case Constants.AGGREGATE_TOTAL_INTEGER
|
||||||
|
oCol.SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Sum
|
||||||
|
oCol.SummaryItem.DisplayFormat = "SUM: {0:N0}"
|
||||||
|
oShouldDisplayFooter = True
|
||||||
|
|
||||||
|
Case Constants.AGGREGATE_TOTAL_FLOAT
|
||||||
|
oCol.SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Sum
|
||||||
|
oCol.SummaryItem.DisplayFormat = "SUM: {0:N2}"
|
||||||
|
oShouldDisplayFooter = True
|
||||||
|
|
||||||
|
Case Constants.AGGREGATE_TOTAL_CURRENCY
|
||||||
|
oCol.SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Sum
|
||||||
|
oCol.SummaryItem.DisplayFormat = "SUM: {0:C2}"
|
||||||
|
oShouldDisplayFooter = True
|
||||||
|
|
||||||
|
Case Constants.AGGREGATE_TOTAL_AVG
|
||||||
|
oCol.SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Average
|
||||||
|
oCol.SummaryItem.DisplayFormat = "AVG: {0}"
|
||||||
|
oShouldDisplayFooter = True
|
||||||
|
|
||||||
|
Case Constants.AGGREGATE_TOTAL_MAX
|
||||||
|
oCol.SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Max
|
||||||
|
oCol.SummaryItem.DisplayFormat = "MAX: {0}"
|
||||||
|
oShouldDisplayFooter = True
|
||||||
|
|
||||||
|
Case Constants.AGGREGATE_TOTAL_MIN
|
||||||
|
oCol.SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Min
|
||||||
|
oCol.SummaryItem.DisplayFormat = "MIN: {0}"
|
||||||
|
oShouldDisplayFooter = True
|
||||||
|
|
||||||
|
Case Constants.AGGREGATE_TOTAL_COUNT
|
||||||
|
oCol.SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Count
|
||||||
|
oCol.SummaryItem.DisplayFormat = "NUM: {0}"
|
||||||
|
oShouldDisplayFooter = True
|
||||||
|
|
||||||
|
End Select
|
||||||
|
Next
|
||||||
|
|
||||||
|
pGridView.OptionsView.ShowFooter = oShouldDisplayFooter
|
||||||
|
End Sub
|
||||||
|
End Class
|
||||||
|
|
||||||
|
|
||||||
|
End Namespace
|
||||||
@ -282,6 +282,8 @@
|
|||||||
<Compile Include="ClassWorkDoc.vb" />
|
<Compile Include="ClassWorkDoc.vb" />
|
||||||
<Compile Include="clsPatterns.vb" />
|
<Compile Include="clsPatterns.vb" />
|
||||||
<Compile Include="clsWMDocGrid.vb" />
|
<Compile Include="clsWMDocGrid.vb" />
|
||||||
|
<Compile Include="ControlCreator\Constants.vb" />
|
||||||
|
<Compile Include="ControlCreator\GridControl.vb" />
|
||||||
<Compile Include="FinalIndexDataSet.Designer.vb">
|
<Compile Include="FinalIndexDataSet.Designer.vb">
|
||||||
<AutoGen>True</AutoGen>
|
<AutoGen>True</AutoGen>
|
||||||
<DesignTime>True</DesignTime>
|
<DesignTime>True</DesignTime>
|
||||||
|
|||||||
@ -2445,9 +2445,6 @@ Public Class frmValidator
|
|||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
FillIndexValues(first)
|
FillIndexValues(first)
|
||||||
|
|
||||||
For Each oControl As Control In PanelValidatorControl.Controls
|
For Each oControl As Control In PanelValidatorControl.Controls
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user