265 lines
10 KiB
VB.net
265 lines
10 KiB
VB.net
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
|
|
ClassLogger.Add("Unexpected Error in FormatDatatable: " & ex.Message, True)
|
|
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 = ClassDatabase.Return_Datatable(sql, True)
|
|
|
|
For Each row As DataRow In dt.Rows
|
|
list.Add(row.Item("COL_NAME"))
|
|
Next
|
|
|
|
Return list
|
|
Catch ex As Exception
|
|
ClassLogger.Add("Unexpected Error in GetCurrencyColumns: " & ex.Message, True)
|
|
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 = ClassDatabase.Return_Datatable(sqlcheck, True)
|
|
'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(0))
|
|
Next
|
|
End If
|
|
listcheck.Add("files?")
|
|
Return listcheck
|
|
Catch ex As Exception
|
|
ClassLogger.Add("Unexpected Error in GetCheckboxColumns: " & ex.Message, True)
|
|
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 = ClassDatabase.Return_Datatable(sqlcheck, True)
|
|
'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(0))
|
|
Next
|
|
End If
|
|
Return listdate
|
|
Catch ex As Exception
|
|
ClassLogger.Add("Unexpected Error in GetCheckboxColumns: " & ex.Message, True)
|
|
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
|
|
' ClassLogger.Add(">> Attention: Format_GridColumns - Could not load converted datatable: " & ex.Message, False)
|
|
' '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)
|
|
' ClassLogger.Add("Error in Format_GridColumns: " & ex.Message, True)
|
|
' Return Nothing
|
|
' End Try
|
|
|
|
'End Function
|