jj 14.12 ClassGridFormatter

This commit is contained in:
JenneJ
2016-12-14 12:09:46 +01:00
parent df67c1ecc1
commit 29b3857635
8 changed files with 3560 additions and 4951 deletions

View File

@@ -0,0 +1,214 @@
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 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
End Sub
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)
'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
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)
'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

View File

@@ -172,90 +172,6 @@ Public Class ClassHelper
Shared Function Convert_Date_2_Form_Format(p1 As Date) As Date
Throw New NotImplementedException
End Function
Public Shared Function Return_listcheck(ENTITY_ID As Integer)
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 = " & ENTITY_ID
Dim dtcheck As DataTable = ClassDatabase.Return_Datatable(sqlcheck)
'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
Return listcheck
Catch ex As Exception
ClassLogger.Add("Unexpected Error in Return_listcheck: " & ex.Message, True)
Return Nothing
End Try
End Function
Public Shared Function Return_listdate(ENTITY_ID As Integer)
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 = " & ENTITY_ID
Dim dtdate As DataTable = ClassDatabase.Return_Datatable(sqlcheck)
'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 Return_listdate: " & ex.Message, True)
Return Nothing
End Try
End Function
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
Public Shared Function InsertEssential_Log(REFERENCE_KEY As Integer, REFERENCE_STRING As String, COMMENT As String)
Try
Dim insert = String.Format("INSERT INTO TBPMO_LOG_ESSENTIALS (REFERENCE_KEY,REFERENCE_STRING,COMMENT,ADDED_WHO) VALUES ({0},'{1}','{2}','{3}')", REFERENCE_KEY, REFERENCE_STRING, COMMENT, USER_USERNAME)

View File

@@ -262,6 +262,7 @@
</Compile>
<Compile Include="ClassFileResult.vb" />
<Compile Include="ClassFolderWatcher.vb" />
<Compile Include="ClassGridFormatter.vb" />
<Compile Include="ClassJumpRecord.vb" />
<Compile Include="ClassLicence.vb" />
<Compile Include="ClassAsyncSQL.vb" />

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -3096,29 +3096,11 @@ Public Class frmConstructor_Main
'Grid leeren
Clear_Grid_View()
'Vorbereiten der Arrays
Dim listcheck As List(Of String) = ClassHelper.Return_listcheck(ENTITY_ID)
Dim listdate As List(Of String) = ClassHelper.Return_listdate(ENTITY_ID)
Dim DT_RESULT As DataTable = ClassHelper.Format_GridColumns(DT_SELECTION, _ENTITYSQL, listcheck, listdate)
Dim gridFormatter As New ClassGridFormatter.ConstructorView(DT_SELECTION, ENTITY_ID)
Dim DT_RESULT As DataTable = gridFormatter.FormatDatatable()
GridControlMain.DataSource = DT_RESULT
gridFormatter.FormatGridView(grvwGrid)
' Alle Date Spalten durchgehen
For Each col As String In listdate
Dim date_edit As New DevExpress.XtraEditors.Repository.RepositoryItemTimeEdit
Dim date_column As GridColumn = grvwGrid.Columns(col)
date_column.DisplayFormat.FormatType = FormatType.DateTime
date_column.DisplayFormat.FormatString = CURRENT_DATE_FORMAT
date_column.OptionsFilter.FilterPopupMode = FilterPopupMode.Date
date_column.ColumnEdit = date_edit
date_column.FilterMode = ColumnFilterMode.Value ' was DisplayText
date_edit.DisplayFormat.FormatType = FormatType.DateTime
date_edit.DisplayFormat.FormatString = CURRENT_DATE_FORMAT
date_edit.Mask.MaskType = Mask.MaskType.DateTime
date_edit.Mask.EditMask = CURRENT_DATE_FORMAT
date_edit.Mask.UseMaskAsDisplayFormat = True
Next
Try
grvwGrid.Columns("AddedWhen").DisplayFormat.FormatType = FormatType.DateTime
grvwGrid.Columns("AddedWhen").DisplayFormat.FormatString = CURRENT_DATE_FORMAT & " HH:MM:ss"
@@ -6416,6 +6398,6 @@ Public Class frmConstructor_Main
End If
Next
End Sub
End Class

View File

@@ -117,41 +117,46 @@ Public Class frmGeodataNavigation
Private Sub LoadGridData()
If Not IsNothing(EntityDataTable) Then
GridControlGeo.DataSource = EntityDataTable
If IsNothing(EntityDataTable) Then
Exit Sub
End If
Dim listcheck As List(Of String) = ClassHelper.Return_listcheck(CURRENT_ENTITY_ID)
Dim listdate As List(Of String) = ClassHelper.Return_listdate(CURRENT_ENTITY_ID)
Dim gridFormatter As New ClassGridFormatter.ConstructorView(EntityDataTable, CURRENT_ENTITY_ID)
Dim DT_RESULT As DataTable = gridFormatter.FormatDatatable()
GridControlGeo.DataSource = DT_RESULT
gridFormatter.FormatGridView(grvwMain)
Dim CheckBoxEditorForDisplay = New RepositoryItemCheckEdit()
CheckBoxEditorForDisplay.ValueChecked = 1
CheckBoxEditorForDisplay.ValueUnchecked = 0
GridControlGeo.RepositoryItems.Add(CheckBoxEditorForDisplay)
'Dim listcheck As List(Of String) = ClassHelper.Return_listcheck(CURRENT_ENTITY_ID)
'Dim listdate As List(Of String) = ClassHelper.Return_listdate(CURRENT_ENTITY_ID)
' Alle Checkbox Spalten durchgehen und CheckBoxEditor zuweisen
For Each col As String In listcheck
If Not IsNothing(grvwMain.Columns(col)) Then
grvwMain.Columns(col).ColumnEdit = CheckBoxEditorForDisplay
End If
Next
'Dim CheckBoxEditorForDisplay = New RepositoryItemCheckEdit()
'CheckBoxEditorForDisplay.ValueChecked = 1
'CheckBoxEditorForDisplay.ValueUnchecked = 0
'GridControlGeo.RepositoryItems.Add(CheckBoxEditorForDisplay)
For Each col As String In listdate
Dim date_edit As New DevExpress.XtraEditors.Repository.RepositoryItemTimeEdit
Dim date_column As GridColumn = grvwMain.Columns(col)
date_column.DisplayFormat.FormatType = FormatType.DateTime
date_column.DisplayFormat.FormatString = CURRENT_DATE_FORMAT
date_column.OptionsFilter.FilterPopupMode = FilterPopupMode.Date
date_column.ColumnEdit = date_edit
date_column.FilterMode = ColumnFilterMode.Value ' was DisplayText
'' Alle Checkbox Spalten durchgehen und CheckBoxEditor zuweisen
'For Each col As String In listcheck
' If Not IsNothing(grvwMain.Columns(col)) Then
' grvwMain.Columns(col).ColumnEdit = CheckBoxEditorForDisplay
' End If
'Next
date_edit.DisplayFormat.FormatType = FormatType.DateTime
date_edit.DisplayFormat.FormatString = CURRENT_DATE_FORMAT
date_edit.Mask.MaskType = Mask.MaskType.DateTime
date_edit.Mask.EditMask = CURRENT_DATE_FORMAT
date_edit.Mask.UseMaskAsDisplayFormat = True
'For Each col As String In listdate
' Dim date_edit As New DevExpress.XtraEditors.Repository.RepositoryItemTimeEdit
' Dim date_column As GridColumn = grvwMain.Columns(col)
' date_column.DisplayFormat.FormatType = FormatType.DateTime
' date_column.DisplayFormat.FormatString = CURRENT_DATE_FORMAT
' date_column.OptionsFilter.FilterPopupMode = FilterPopupMode.Date
' date_column.ColumnEdit = date_edit
' date_column.FilterMode = ColumnFilterMode.Value ' was DisplayText
Next
' date_edit.DisplayFormat.FormatType = FormatType.DateTime
' date_edit.DisplayFormat.FormatString = CURRENT_DATE_FORMAT
' date_edit.Mask.MaskType = Mask.MaskType.DateTime
' date_edit.Mask.EditMask = CURRENT_DATE_FORMAT
' date_edit.Mask.UseMaskAsDisplayFormat = True
'Next
' Styles for GridControl
grvwMain.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.None

File diff suppressed because it is too large Load Diff