MS SAP
This commit is contained in:
265
app/DD-Record-Organizer/Classes/ClassGridFormatter.vb
Normal file
265
app/DD-Record-Organizer/Classes/ClassGridFormatter.vb
Normal file
@@ -0,0 +1,265 @@
|
||||
Imports DevExpress.Utils
|
||||
|
||||
Imports DevExpress.XtraGrid
|
||||
Imports DevExpress.XtraGrid.Columns
|
||||
Imports DevExpress.XtraGrid.Views.Grid
|
||||
|
||||
Imports DevExpress.XtraEditors
|
||||
Imports DevExpress.XtraEditors.Repository
|
||||
|
||||
|
||||
Public Class ClassGridFormatter
|
||||
|
||||
Private Shared tDate As Type = GetType(Date)
|
||||
Private Shared tBool As Type = GetType(Boolean)
|
||||
|
||||
|
||||
|
||||
Public Enum DataTableType
|
||||
CONSTRUCTOR_VIEW
|
||||
WINDREAM_RESULT
|
||||
End Enum
|
||||
|
||||
''' <summary>
|
||||
''' Die Formatierungsfunktionen für die ConstruktorView Tabellen
|
||||
''' </summary>
|
||||
Public Class ConstructorView
|
||||
Private EntityId As Integer
|
||||
Private DT As DataTable
|
||||
|
||||
Private dateEdit As New RepositoryItemTimeEdit()
|
||||
Private checkboxEdit = New RepositoryItemCheckEdit()
|
||||
|
||||
Public checkboxColumns As New List(Of String)
|
||||
Public dateColumns As New List(Of String)
|
||||
Public currencyColumns As New List(Of String)
|
||||
|
||||
Public Sub New(DT As DataTable, EntityId As Integer)
|
||||
Me.EntityId = EntityId
|
||||
Me.DT = DT
|
||||
|
||||
' dateEdit vor-formatieren
|
||||
dateEdit.DisplayFormat.FormatType = FormatType.DateTime
|
||||
dateEdit.DisplayFormat.FormatString = CURRENT_DATE_FORMAT
|
||||
dateEdit.Mask.MaskType = Mask.MaskType.DateTime
|
||||
dateEdit.Mask.EditMask = CURRENT_DATE_FORMAT
|
||||
dateEdit.Mask.UseMaskAsDisplayFormat = True
|
||||
|
||||
' checkboxEdit vor-formatieren
|
||||
checkboxEdit.ValueChecked = True
|
||||
checkboxEdit.ValueUnchecked = False
|
||||
End Sub
|
||||
|
||||
Public Function FormatDatatable() As DataTable
|
||||
Try
|
||||
' Datatable klonen, um Spalten zu formatieren
|
||||
Dim clonedDT As DataTable = Me.DT.Clone()
|
||||
|
||||
' Checkbox Spalten bestimmen
|
||||
Me.checkboxColumns = GetCheckboxColumns()
|
||||
|
||||
' Checkbox Spalten formatieren
|
||||
For Each columnName As String In Me.checkboxColumns
|
||||
Dim column As DataColumn = clonedDT.Columns(columnName)
|
||||
|
||||
If Not IsNothing(column) Then
|
||||
column.DataType = tBool
|
||||
End If
|
||||
Next
|
||||
|
||||
' Datums Spalten bestimmen
|
||||
Me.dateColumns = GetDateColumns()
|
||||
|
||||
' Datums Spalten Formatieren
|
||||
For Each columnName As String In Me.dateColumns
|
||||
Dim column As DataColumn = clonedDT.Columns(columnName)
|
||||
|
||||
If Not IsNothing(column) Then
|
||||
column.DataType = tDate
|
||||
End If
|
||||
Next
|
||||
|
||||
' Daten aus DT in formatierte DataTable clonedDT laden
|
||||
clonedDT.Load(DT.CreateDataReader)
|
||||
Return clonedDT
|
||||
Catch ex As Exception
|
||||
LOGGER.Warn("Unexpected Error in FormatDatatable: " & ex.Message)
|
||||
Return DT
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Public Sub FormatGridView(gridView As GridView)
|
||||
If IsNothing(gridView.GridControl.DataSource) Then
|
||||
Throw New Exception("Error in FormatGridView: DataSource is Empty!")
|
||||
End If
|
||||
|
||||
' Editoren zum Grid hinzufügen
|
||||
gridView.GridControl.RepositoryItems.AddRange({checkboxEdit, dateEdit})
|
||||
|
||||
For Each columnName As String In Me.dateColumns
|
||||
Dim column As GridColumn = gridView.Columns(columnName)
|
||||
|
||||
If Not IsNothing(column) Then
|
||||
column.DisplayFormat.FormatType = FormatType.DateTime
|
||||
column.DisplayFormat.FormatString = CURRENT_DATE_FORMAT
|
||||
column.OptionsFilter.FilterPopupMode = FilterPopupMode.Date
|
||||
column.FilterMode = ColumnFilterMode.Value ' was DisplayText
|
||||
column.ColumnEdit = dateEdit
|
||||
End If
|
||||
Next
|
||||
|
||||
For Each columnName As String In Me.checkboxColumns
|
||||
Dim column As GridColumn = gridView.Columns(columnName)
|
||||
|
||||
If Not IsNothing(column) Then
|
||||
column.ColumnEdit = checkboxEdit
|
||||
End If
|
||||
Next
|
||||
|
||||
currencyColumns = GetCurrencyColumns()
|
||||
|
||||
For Each columnName As String In currencyColumns
|
||||
Dim column As GridColumn = gridView.Columns(columnName)
|
||||
|
||||
If Not IsNothing(column) Then
|
||||
column.DisplayFormat.FormatType = FormatType.Numeric
|
||||
column.DisplayFormat.FormatString = "C"
|
||||
column.DisplayFormat.Format = New CurrencyFormatter()
|
||||
End If
|
||||
Next
|
||||
|
||||
End Sub
|
||||
|
||||
Class CurrencyFormatter
|
||||
Implements IFormatProvider, ICustomFormatter
|
||||
|
||||
Public Function GetFormat(formatType As Type) As Object Implements IFormatProvider.GetFormat
|
||||
Return Me
|
||||
End Function
|
||||
|
||||
Public Function Format(formatString As String, arg As Object, formatProvider As IFormatProvider) As String Implements ICustomFormatter.Format
|
||||
Dim formatValue As String = arg.ToString()
|
||||
|
||||
If (formatValue.Count > 0 And formatString.ToUpper() = "C") Then
|
||||
Return ClassHelper.Format_Currency(formatValue, USER_LANGUAGE)
|
||||
Else
|
||||
Return formatValue
|
||||
End If
|
||||
End Function
|
||||
End Class
|
||||
|
||||
Private Function GetCurrencyColumns() As List(Of String)
|
||||
Try
|
||||
Dim list As New List(Of String)
|
||||
' Alle Currency Felder für aktuelle Ansicht heraussuchen
|
||||
Dim sql As String = "SELECT COL_NAME FROM TBPMO_CONTROL WHERE CONTROL_TYPE_ID = 2 AND FORMAT_TYPE = 'Currency' AND SHOW_COLUMN = 1 AND FORM_ID = " & Me.EntityId
|
||||
Dim dt As DataTable = ClassHelper.FILTER_DATATABLE(CURRENT_TBPMO_CONTROL, "CONTROL_TYPE_ID = 2 AND FORMAT_TYPE = 'Currency' AND SHOW_COLUMN = 1 AND FORM_ID = " & Me.EntityId, "")
|
||||
|
||||
For Each row As DataRow In dt.Rows
|
||||
list.Add(row.Item("COL_NAME"))
|
||||
Next
|
||||
|
||||
Return list
|
||||
Catch ex As Exception
|
||||
LOGGER.Warn("Unexpected Error in GetCurrencyColumns: " & ex.Message)
|
||||
Return Nothing
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Private Function GetCheckboxColumns()
|
||||
Try
|
||||
Dim listcheck As New List(Of String)
|
||||
' Alle Checkboxen für aktuelle Ansicht heraussuchen
|
||||
' Dim sqlcheck As String = "SELECT COL_NAME FROM TBPMO_CONTROL WHERE CONTROL_TYPE_ID in (10,11) AND SHOW_COLUMN = 1 AND FORM_ID = " & Me.EntityId
|
||||
Dim dtcheck As DataTable = ClassHelper.FILTER_DATATABLE(CURRENT_TBPMO_CONTROL, "CONTROL_TYPE_ID in (10,11) AND SHOW_COLUMN = 1 AND FORM_ID = " & Me.EntityId, "")
|
||||
'Liste von allen Spaltentiteln mit Checkbox erstellen
|
||||
If dtcheck.Rows.Count > 0 Then
|
||||
For Each row As DataRow In dtcheck.Rows
|
||||
listcheck.Add(row.Item("COL_NAME"))
|
||||
Next
|
||||
End If
|
||||
listcheck.Add("files?")
|
||||
Return listcheck
|
||||
Catch ex As Exception
|
||||
LOGGER.Warn("Unexpected Error in GetCheckboxColumns: " & ex.Message)
|
||||
Return Nothing
|
||||
End Try
|
||||
End Function
|
||||
Private Function GetDateColumns()
|
||||
Try
|
||||
Dim listdate As New List(Of String)
|
||||
' Alle Checkboxen für aktuelle Ansicht heraussuchen
|
||||
' Dim sqlcheck As String = "SELECT COL_NAME FROM TBPMO_CONTROL WHERE CONTROL_TYPE_ID = 4 AND SHOW_COLUMN = 1 AND FORM_ID = " & Me.EntityId
|
||||
Dim dtdate As DataTable = ClassHelper.FILTER_DATATABLE(CURRENT_TBPMO_CONTROL, "CONTROL_TYPE_ID = 4 AND SHOW_COLUMN = 1 AND FORM_ID = " & Me.EntityId, "")
|
||||
|
||||
'Liste von allen Spaltentiteln mit Checkbox erstellen
|
||||
If dtdate.Rows.Count > 0 Then
|
||||
For Each row As DataRow In dtdate.Rows
|
||||
listdate.Add(row.Item("COL_NAME"))
|
||||
Next
|
||||
End If
|
||||
Return listdate
|
||||
Catch ex As Exception
|
||||
LOGGER.Warn("Unexpected Error in GetCheckboxColumns: " & ex.Message)
|
||||
Return Nothing
|
||||
End Try
|
||||
End Function
|
||||
End Class
|
||||
|
||||
''' <summary>
|
||||
''' Die Formatierungsfunktionen für die WindreamResult Tabellen
|
||||
''' </summary>
|
||||
Public Class WindreamResult
|
||||
|
||||
End Class
|
||||
|
||||
End Class
|
||||
|
||||
' FOR REFERENCE IN CASE SOMETHING BREAKS :)
|
||||
'Public Shared Function Format_GridColumns(Primary_DT As DataTable, _ENTITYSQL As String, listcheck As List(Of String), listdate As List(Of String))
|
||||
' Try
|
||||
' Dim tbltemp As DataTable = Primary_DT.Clone()
|
||||
' ' Nicht benötigt? Datumsspalten werden im Grid formatiert
|
||||
' For Each col As String In listdate
|
||||
' Dim colDate As DataColumn = tbltemp.Columns(col)
|
||||
' If Not IsNothing(colDate) Then
|
||||
' Try
|
||||
' colDate.DataType = GetType(Date)
|
||||
' Catch ex As Exception
|
||||
' MsgBox("Error in Format_GridColumns:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
|
||||
' End Try
|
||||
' End If
|
||||
' Next
|
||||
' For Each col1 As String In listcheck
|
||||
' Dim collist As DataColumn = tbltemp.Columns(col1)
|
||||
' If Not IsNothing(collist) Then
|
||||
' collist.DataType = GetType(Boolean)
|
||||
' End If
|
||||
' Next
|
||||
' Try
|
||||
' Dim collist As DataColumn = tbltemp.Columns("files?")
|
||||
' If Not IsNothing(collist) Then
|
||||
' collist.DataType = GetType(Boolean)
|
||||
' End If
|
||||
' Catch ex As Exception
|
||||
|
||||
' End Try
|
||||
' Try
|
||||
' tbltemp.Load(Primary_DT.CreateDataReader)
|
||||
' Return tbltemp
|
||||
' Catch ex As Exception
|
||||
' Logger.Warn("Attention: Format_GridColumns - Could not load converted datatable: " & ex.Message)
|
||||
' 'Tabelle wird ohne Datekonvertierung geladen
|
||||
' Dim DTEntity As DataTable = ClassDatabase.Return_Datatable(_ENTITYSQL, "Load_Entity_Data_Only")
|
||||
' Dim primaryKey(1) As DataColumn
|
||||
' primaryKey(0) = DTEntity.Columns("Record-ID")
|
||||
' DTEntity.PrimaryKey = primaryKey
|
||||
' Return DTEntity
|
||||
' End Try
|
||||
' Catch ex As Exception
|
||||
' MsgBox("Unexpected Error in Format_GridColumns:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
|
||||
' Logger.Warn("Error in Format_GridColumns: " & ex.Message)
|
||||
' Return Nothing
|
||||
' End Try
|
||||
|
||||
'End Function
|
||||
Reference in New Issue
Block a user