Imports DevExpress.Utils Imports DevExpress.XtraGrid Imports DevExpress.XtraGrid.Columns Imports DevExpress.XtraGrid.Views.Grid Imports DevExpress.XtraEditors Imports DevExpress.XtraEditors.Repository Public Class ClassWindreamDocGrid Public Shared RESULT_DOC_PATH As String Public Shared RESULT_OBJECTTYPE As String Public Shared RESULT_INWORK As Boolean Public Shared RESULT_DOC_ID As Integer Public Shared RESULT_DISPLAYNAME As String Private Shared _dropdownValueChangedHandler As EventHandler Public Shared Sub GetDocItems(gridView As GridView) Try RESULT_DOC_PATH = gridView.GetFocusedRowCellValue(gridView.Columns("FULLPATH")) Catch ex As Exception ClassLogger.Add(">> Attention: Could not set DocVariable RESULT_DOC_PATH: " & ex.Message, False) RESULT_DOC_PATH = Nothing End Try Try RESULT_OBJECTTYPE = gridView.GetFocusedRowCellValue(gridView.Columns("OBJECTTYPE")) Catch ex As Exception ClassLogger.Add(">> Attention: Could not set DocVariable RESULT_OBJECTTYPE: " & ex.Message, False) RESULT_OBJECTTYPE = "" End Try Try RESULT_INWORK = gridView.GetFocusedRowCellValue(gridView.Columns("in work?")) Catch ex As Exception ClassLogger.Add(">> Attention: Could not set DocVariable RESULT_INWORK: " & ex.Message, False) RESULT_INWORK = "" End Try Try RESULT_DOC_ID = gridView.GetFocusedRowCellValue(gridView.Columns("DocID")) Catch ex As Exception ClassLogger.Add(">> Attention: Could not set DocVariable RESULT_DOC_ID: " & ex.Message, False) RESULT_DOC_ID = Nothing End Try Try RESULT_DISPLAYNAME = gridView.GetFocusedRowCellValue(gridView.Columns("Displayname")) Catch ex As Exception ClassLogger.Add(">> Attention: Could not set DocVariable RESULT_DISPLAYNAME: " & ex.Message, False) RESULT_DISPLAYNAME = "" End Try End Sub Public Shared Sub FormatColumns(gridView As GridView, DT_RESULT As DataTable, DT_WINDREAM_RESULTLIST As DataTable, DT_DOCRESULT_DROPDOWN_ITEMS As DataTable, DropdownValueChangedHandler As EventHandler) Dim dateColumns As New List(Of String) Dim checkboxColumns As New List(Of String) Dim dropdownTable As New DataTable() dropdownTable.TableName = "DROPDOWN_TABLE" dropdownTable.Columns.Add("ID", GetType(Integer)) dropdownTable.Columns.Add("COLUMN_VIEW", GetType(String)) _dropdownValueChangedHandler = DropdownValueChangedHandler For Each row As DataRow In DT_WINDREAM_RESULTLIST.Rows Dim guid As Integer = row.Item("GUID") Dim width As Integer = row.Item("WIDTH") Dim typeID As Integer = row.Item("TYPE_ID") Dim isVisible As Boolean = row.Item("VISIBLE") Dim columnTitle As String = row.Item("HEADER_CAPTION") ' Liste aller Datumsspalten erstellen If typeID = 3 And isVisible = True Then dateColumns.Add(columnTitle) End If ' Liste aller Checkboxspalten erstellen If typeID = 2 And isVisible = True Then checkboxColumns.Add(columnTitle) End If If typeID = 4 And isVisible = True Then Dim dropdownRow As DataRow = dropdownTable.NewRow() dropdownRow.Item("ID") = guid dropdownRow.Item("COLUMN_VIEW") = columnTitle dropdownTable.Rows.Add(dropdownRow) dropdownTable.AcceptChanges() End If Next Dim clonedTable As DataTable = DT_RESULT.Clone() ' In DataTable die DateSpalten mit dem Type Date belegen For Each dateColumnTitle As String In dateColumns Dim dateColumn As DataColumn = clonedTable.Columns(dateColumnTitle) If Not IsNothing(dateColumn) Then dateColumn.DataType = GetType(Date) End If Next ' In DataTable die CheckboxSpalten mit dem Typ Boolean belegen For Each checkboxColunmTitle As String In checkboxColumns Dim checkboxColumn As DataColumn = clonedTable.Columns(checkboxColunmTitle) If Not IsNothing(checkboxColumn) Then checkboxColumn.DataType = GetType(Boolean) End If Next Try clonedTable.Load(DT_RESULT.CreateDataReader()) DT_RESULT = clonedTable Catch ex As Exception ClassLogger.Add(">> Attention: Could not load converted datatable DocSearch: " & ex.Message, False) End Try gridView.GridControl.DataSource = DT_RESULT ' Breite der Spalten anpassen For Each row As DataRow In DT_WINDREAM_RESULTLIST.Rows Dim Width = row.Item("WIDTH") If Not IsNothing(Width) And Not IsDBNull(Width) Then Dim column = DirectCast(gridView.Columns.Item(row.Item("HEADER_CAPTION")), DevExpress.XtraGrid.Columns.GridColumn) If Not IsNothing(column) Then column.Width = Width End If End If Next ' Dropdown/Combobox Editor für passende Spalten anwenden For Each dropdownRow As DataRow In dropdownTable.Rows Dim dropdown As New RepositoryItemComboBox() Dim columnTitle As String = dropdownRow.Item("COLUMN_VIEW") Dim guid As Integer = dropdownRow.Item("ID") Dim expression As String = String.Format("CONFIG_ID = {0}", guid.ToString()) Dim matchingRows() As DataRow = DT_DOCRESULT_DROPDOWN_ITEMS.Select(expression, "SEQUENCE") ' Dropdown füllen For Each matchingRow As DataRow In matchingRows Dim item As New WindreamDocGridComboboxItem() item.ConfigID = matchingRow.Item("CONFIG_ID") item.Value = matchingRow.Item("VALUE") dropdown.Items.Add(item) Next gridView.GridControl.RepositoryItems.Add(dropdown) If Not IsNothing(gridView.Columns(columnTitle)) Then gridView.Columns(columnTitle).ColumnEdit = dropdown End If AddHandler dropdown.SelectedValueChanged, _dropdownValueChangedHandler Next ' Eigenschaften der Spalten anpassen gridView.Columns.Item("ICON").MaxWidth = 24 gridView.Columns.Item("ICON").MinWidth = 24 gridView.Columns.Item("FULLPATH").Visible = False gridView.Columns.Item("OBJECTTYPE").Visible = False gridView.Columns.Item("DocID").Visible = False ' Changed & Created Spalten anpassen Dim created, changed As String If USER_LANGUAGE <> "de-DE" Then changed = "Changed" created = "Created" Else changed = "Geändert" created = "Erstellt" End If Dim createdColumn = gridView.Columns(created) If Not IsNothing(createdColumn) Then createdColumn.DisplayFormat.FormatType = FormatType.DateTime createdColumn.DisplayFormat.FormatString = CURRENT_DATE_FORMAT & " HH:MM:ss" End If Dim changedColumn = gridView.Columns(changed) If Not IsNothing(changedColumn) Then changedColumn.DisplayFormat.FormatType = FormatType.DateTime changedColumn.DisplayFormat.FormatString = CURRENT_DATE_FORMAT & " HH:MM:ss" End If ' Für die Dropdown Spalte Änderungen zulassen For Each column As GridColumn In gridView.Columns Dim _AllowEdit As Boolean = False For Each dropdownrow As DataRow In dropdownTable.Rows Dim columnTitle = dropdownrow.Item("COLUMN_VIEW") If columnTitle = column.FieldName Then _AllowEdit = True Exit For End If Next column.OptionsColumn.AllowEdit = _AllowEdit Next Dim CheckBoxEditorForDisplay = New RepositoryItemCheckEdit() CheckBoxEditorForDisplay.ValueChecked = "True" CheckBoxEditorForDisplay.ValueUnchecked = "False" 'Alle Checkbox Spalten durchgehen und CheckBoxEditor zuweisen For Each columnTitle As String In checkboxColumns gridView.GridControl.RepositoryItems.Add(CheckBoxEditorForDisplay) If Not IsNothing(gridView.Columns(columnTitle)) Then gridView.Columns(columnTitle).ColumnEdit = CheckBoxEditorForDisplay End If Next End Sub Public Class WindreamDocGridComboboxItem Implements IConvertible Public ConfigID As Integer Public Value As String Public Overrides Function ToString() As String Return Me.Value End Function Public Function ToString1(provider As IFormatProvider) As String Implements IConvertible.ToString Return Me.Value End Function Public Function GetTypeCode() As TypeCode Implements IConvertible.GetTypeCode Throw New NotImplementedException End Function Public Function ToBoolean(provider As IFormatProvider) As Boolean Implements IConvertible.ToBoolean Throw New NotImplementedException End Function Public Function ToByte(provider As IFormatProvider) As Byte Implements IConvertible.ToByte Throw New NotImplementedException End Function Public Function ToChar(provider As IFormatProvider) As Char Implements IConvertible.ToChar Throw New NotImplementedException End Function Public Function ToDateTime(provider As IFormatProvider) As Date Implements IConvertible.ToDateTime Throw New NotImplementedException End Function Public Function ToDecimal(provider As IFormatProvider) As Decimal Implements IConvertible.ToDecimal Throw New NotImplementedException End Function Public Function ToDouble(provider As IFormatProvider) As Double Implements IConvertible.ToDouble Throw New NotImplementedException End Function Public Function ToInt16(provider As IFormatProvider) As Short Implements IConvertible.ToInt16 Throw New NotImplementedException End Function Public Function ToInt32(provider As IFormatProvider) As Integer Implements IConvertible.ToInt32 Throw New NotImplementedException End Function Public Function ToInt64(provider As IFormatProvider) As Long Implements IConvertible.ToInt64 Throw New NotImplementedException End Function Public Function ToSByte(provider As IFormatProvider) As SByte Implements IConvertible.ToSByte Throw New NotImplementedException End Function Public Function ToSingle(provider As IFormatProvider) As Single Implements IConvertible.ToSingle Throw New NotImplementedException End Function Public Function ToType(conversionType As Type, provider As IFormatProvider) As Object Implements IConvertible.ToType Throw New NotImplementedException End Function Public Function ToUInt16(provider As IFormatProvider) As UShort Implements IConvertible.ToUInt16 Throw New NotImplementedException End Function Public Function ToUInt32(provider As IFormatProvider) As UInteger Implements IConvertible.ToUInt32 Throw New NotImplementedException End Function Public Function ToUInt64(provider As IFormatProvider) As ULong Implements IConvertible.ToUInt64 Throw New NotImplementedException End Function End Class End Class