diff --git a/app/DD-Record-Organizer/ClassPosGrid.vb b/app/DD-Record-Organizer/ClassPosGrid.vb new file mode 100644 index 0000000..2828755 --- /dev/null +++ b/app/DD-Record-Organizer/ClassPosGrid.vb @@ -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 diff --git a/app/DD-Record-Organizer/DD-Record-Organizer.vbproj b/app/DD-Record-Organizer/DD-Record-Organizer.vbproj index 041d375..0502d1a 100644 --- a/app/DD-Record-Organizer/DD-Record-Organizer.vbproj +++ b/app/DD-Record-Organizer/DD-Record-Organizer.vbproj @@ -288,6 +288,7 @@ + diff --git a/app/DD-Record-Organizer/frmConstructor_Main.vb b/app/DD-Record-Organizer/frmConstructor_Main.vb index 30bfa1d..3ab3687 100644 --- a/app/DD-Record-Organizer/frmConstructor_Main.vb +++ b/app/DD-Record-Organizer/frmConstructor_Main.vb @@ -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