141 lines
5.4 KiB
VB.net

Imports DevExpress.XtraEditors.Controls
Imports DevExpress.XtraEditors.Repository
Imports DevExpress.XtraGrid.Columns
Imports DevExpress.XtraGrid.Views.Grid
Public Class ClassPosGrid
Private Shared Sub FormatDateColumn(grid As GridView, column As GridColumn, dateEdit As RepositoryItemDateEdit)
column.ColumnEdit = dateEdit
End Sub
Private Shared Sub FormatBooleanColumn(grid As GridView, column As GridColumn, checkboxEdit As RepositoryItemCheckEdit)
column.ColumnEdit = checkboxEdit
End Sub
Private Shared Sub FormatComboColumn(grid As GridView, column As GridColumn, comboEdit As RepositoryItemComboBox, sqlCommand As String, staticList As String)
Dim comboItems As ComboBoxItemCollection = comboEdit.Items
If staticList <> "" Then
Dim staticListItems() As String = staticList.Split(";")
comboItems.BeginUpdate()
Try
For Each item In staticListItems
comboItems.Add(item)
Next
Finally
comboItems.EndUpdate()
End Try
ElseIf sqlCommand <> "" Then
Dim DT As DataTable
Try
DT = ClassDatabase.Return_Datatable(sqlCommand)
Catch ex As Exception
LOGGER.Warn("Error in FormatComboColumn: " & ex.Message)
Exit Sub
End Try
comboItems.BeginUpdate()
Try
For Each row As DataRow In DT.Rows
Dim value As String = row.Item(0)
comboItems.Add(value)
Next
Finally
comboItems.EndUpdate()
End Try
End If
column.ColumnEdit = comboEdit
End Sub
Private Shared Sub FormatTextColumn(grid As GridView, column As GridColumn, controlId As Integer)
Dim format As String = ClassDatabase.Execute_Scalar("SELECT FORMAT_TYPE FROM TBPMO_CONTROL WHERE GUID = " & controlId)
If IsNothing(format) Then
Exit Sub
End If
If (format = "Currency") Then
column.DisplayFormat.FormatType = DevExpress.Utils.FormatType.Custom
column.DisplayFormat.FormatString = "c"
ElseIf (format = "Decimal") Then
column.DisplayFormat.FormatType = DevExpress.Utils.FormatType.Numeric
End If
End Sub
Shared Sub FormatColumns(grid As GridView, formId As Integer)
' Dim SQL As String = String.Format("SELECT CONTROL_ID, CONTROL_COL_NAME, CTRLTYPE_ID, CONTROL_SQLCOMMAND_1 AS CONTROL_SQL, CONTROL_STATIC_LIST, CONTROL_SHOW_COLUMN FROM VWPMO_CONTROL_SCREEN WHERE CTRLTYPE_ID IN (3,4,10,11) AND FORM_ID = {0}", formId)
Dim Expression As String = String.Format("CTRLTYPE_ID IN (3,4,10,11) AND FORM_ID = {0}", formId)
Dim DT As DataTable = ClassHelper.FILTER_DATATABLE(DT_VWPMO_CONTROL_SCREEN, Expression, "") 'ClassDatabase.Return_Datatable(SQL)
Dim dateEdit As New RepositoryItemDateEdit()
Dim comboEdit As New RepositoryItemComboBox()
Dim checkboxEdit = New RepositoryItemCheckEdit()
' Spalteneditoren dem Grid hinzufügen
grid.GridControl.RepositoryItems.AddRange({dateEdit, comboEdit, checkboxEdit})
For Each row As DataRow In DT.Rows
Dim typeId = row.Item("CTRLTYPE_ID")
Dim controlId = row.Item("CONTROL_ID")
Dim columnName = row.Item("CONTROL_COL_NAME")
Dim sqlCommand = row.Item("CONTROL_SQL")
Dim staticList = row.Item("CONTROL_STATIC_LIST")
Dim showColumn = row.Item("CONTROL_SHOW_COLUMN")
Dim column As GridColumn = grid.Columns.Item(columnName)
' Überprüfen, ob der Spaltenname exisitiert
If IsNothing(column) Then
Resume Next
End If
' Spalten ausblenden, die nicht angezeigt werden sollen
If (showColumn = False) Then
column.Visible = False
Resume Next
End If
' Editoren zuweisen
Select Case typeId
Case 2 'Textbox
FormatTextColumn(grid, column, controlId)
Case 3 'Combobox
FormatComboColumn(grid, column, comboEdit, sqlCommand, staticList)
Case 4 'Datum
FormatDateColumn(grid, column, dateEdit)
Case 10, 11 'Checkbox & Radiobutton
FormatBooleanColumn(grid, column, checkboxEdit)
End Select
Next
' Spalten Statisch Verstecken
HideColumnIfExists(grid.Columns.Item("Record-ID"))
HideColumnIfExists(grid.Columns.Item("Form-ID"))
HideColumnIfExists(grid.Columns.Item("ROW_COLOR"))
HideColumnIfExists(grid.Columns.Item("files?"))
HideColumnIfExists(grid.Columns.Item("file count"))
' Spalten Statisch ReadOnly Machen
MakeReadOnlyIfExists(grid.Columns.Item("AddedWho"))
MakeReadOnlyIfExists(grid.Columns.Item("AddedWhen"))
MakeReadOnlyIfExists(grid.Columns.Item("ChangedWho"))
MakeReadOnlyIfExists(grid.Columns.Item("ChangedWhen"))
End Sub
Private Shared Sub HideColumnIfExists(column As GridColumn)
If Not IsNothing(column) Then
column.Visible = False
End If
End Sub
Shared Sub MakeReadOnlyIfExists(column As GridColumn)
If Not IsNothing(column) Then
column.OptionsColumn.AllowEdit = False
End If
End Sub
End Class