This commit is contained in:
Digital Data - Marlon Schreiber 2017-04-18 14:03:18 +02:00
commit 7e14b60c8d
3 changed files with 144 additions and 80 deletions

View File

@ -0,0 +1,139 @@
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
ClassLogger.Add("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 DT As DataTable = 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

View File

@ -288,6 +288,7 @@
<Compile Include="ClassMoreMetadata.vb" />
<Compile Include="ClassNodeNavigation.vb" />
<Compile Include="ClassNodes.vb" />
<Compile Include="ClassPosGrid.vb" />
<Compile Include="ClassProxy.vb" />
<Compile Include="ClassRecordCommands.vb" />
<Compile Include="ClassRecordState.vb" />

View File

@ -3131,83 +3131,6 @@ Public Class frmConstructor_Main
Me.Close()
End If
End Sub
Sub Create_Grid_Editor(formId As Integer)
Try
Dim SQL As String = "SELECT CONTROL_COL_NAME,CONTROL_SQLCOMMAND_1,CONTROL_STATIC_LIST FROM VWPMO_CONTROL_SCREEN WHERE CTRLTYPE_ID = 3 AND FORM_ID = " & formId
Dim ComboColumns As DataTable = ClassDatabase.Return_Datatable(SQL, True)
' 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 FORM_ID = " & formId
Dim dtcheck As DataTable = ClassDatabase.Return_Datatable(sqlcheck, True)
Dim listcheck As New List(Of String)
'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
' Den Editor Initialisieren und Optionen setzen
Dim CheckBoxEditorForDisplay = New RepositoryItemCheckEdit()
CheckBoxEditorForDisplay.ValueChecked = 1
CheckBoxEditorForDisplay.ValueUnchecked = 0
' Alle Checkbox Spalten durchgehen und CheckBoxEditor zuweisen
For Each col As String In listcheck
grvwGridPos.GridControl.RepositoryItems.Add(CheckBoxEditorForDisplay)
If Not IsNothing(grvwGridPos.Columns(col)) Then
grvwGridPos.Columns(col).ColumnEdit = CheckBoxEditorForDisplay
End If
Next
For Each col As DataRow In ComboColumns.Rows
Dim colName As String = col.Item(0)
Dim hasSqlCommand = col.Item(1).ToString() <> ""
Dim hasStaticList = col.Item(2).ToString() <> ""
If hasStaticList = True Then
Dim comboEdit1 As New RepositoryItemComboBox()
Dim comboItems1 As ComboBoxItemCollection = comboEdit1.Items
Dim staticListItems = col.Item(2).ToString.Split(";")
comboItems1.BeginUpdate()
Try
For Each item In staticListItems
comboItems1.Add(item)
Next
Finally
comboItems1.EndUpdate()
End Try
GridControlPos.RepositoryItems.Add(comboEdit1)
If Not IsNothing(grvwGridPos.Columns(colName)) Then
grvwGridPos.Columns(colName).ColumnEdit = comboEdit1
End If
ElseIf hasSqlCommand = True Then
SQL = col.Item(1).ToString()
Dim dt As DataTable = ClassDatabase.Return_Datatable(SQL)
Dim comboEdit2 As New RepositoryItemComboBox()
Dim comboItems2 As ComboBoxItemCollection = comboEdit2.Items
For Each row As DataRow In dt.Rows
Dim value = row.Item(0)
comboItems2.BeginUpdate()
Try
comboItems2.Add(value)
Finally
comboItems2.EndUpdate()
End Try
Next
GridControlPos.RepositoryItems.Add(comboEdit2)
If Not IsNothing(grvwGridPos.Columns(colName)) Then
grvwGridPos.Columns(colName).ColumnEdit = comboEdit2
End If
End If
Next
Catch ex As Exception
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in Create_Grid_Editor: ", ex.Message)
End Try
End Sub
Sub Load_Pos_Data()
@ -3223,9 +3146,10 @@ Public Class frmConstructor_Main
Dim bs As New BindingSource
bs.DataSource = DT_POS
BindingNavigatorPOS.BindingSource = bs
' --- Editoren laden für Combobox ---
Create_Grid_Editor(POS_ENTITY)
HideColumns_Pos(PARENT_RECORDID)
' --- Editoren laden ---
ClassPosGrid.FormatColumns(grvwGridPos, POS_ENTITY)
'ClassPosGrid.CreateComboEditor(grvwGridPos, POS_ENTITY)
'HideColumns_Pos(PARENT_RECORDID)
End If
End If
Catch ex As Exception