jj 21.09 classwindreamdocgrid
This commit is contained in:
parent
3265b3fd53
commit
b2b75dfa19
@ -11,8 +11,11 @@ Public Class ClassWindreamDocGrid
|
||||
Public Shared RESULT_INWORK As Boolean
|
||||
Public Shared RESULT_DOC_ID As Integer
|
||||
Public Shared RESULT_DISPLAYNAME As String
|
||||
Public Shared RESULT_CONFIG_IDS As Hashtable
|
||||
|
||||
Private Shared _dropdownValueChangedHandler As EventHandler
|
||||
Private Shared _datepickerValueChangedHandler As EventHandler
|
||||
Private Shared _textValueChangedHandler As EventHandler
|
||||
|
||||
Public Shared Sub GetDocItems(gridView As GridView)
|
||||
Try
|
||||
@ -47,105 +50,54 @@ Public Class ClassWindreamDocGrid
|
||||
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))
|
||||
|
||||
Public Shared Sub FillColumns(gridView As GridView, DT_RESULT As DataTable, DT_WINDREAM_RESULTLIST As DataTable, DT_DOCRESULT_DROPDOWN_ITEMS As DataTable, DropdownValueChangedHandler As EventHandler, DatepickerValueChangedHandler As EventHandler, TextValueChangedHandler As EventHandler)
|
||||
' Handler speichern
|
||||
_dropdownValueChangedHandler = DropdownValueChangedHandler
|
||||
_datepickerValueChangedHandler = DatepickerValueChangedHandler
|
||||
_textValueChangedHandler = TextValueChangedHandler
|
||||
|
||||
' Tabelle vor dem verändern klonen
|
||||
Dim clonedTable As DataTable = DT_RESULT.Clone()
|
||||
|
||||
RESULT_CONFIG_IDS = New Hashtable()
|
||||
|
||||
' Datentypen der DataTable setzen
|
||||
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 isEditable As Boolean = row.Item("EDITABLE")
|
||||
Dim columnTitle As String = row.Item("HEADER_CAPTION")
|
||||
|
||||
' Liste aller Datumsspalten erstellen
|
||||
RESULT_CONFIG_IDS.Add(columnTitle, guid)
|
||||
|
||||
' Checkbox Spalte auf Boolean setzen
|
||||
If typeID = 2 And isVisible Then
|
||||
Dim checkboxColumn As DataColumn = clonedTable.Columns(columnTitle)
|
||||
|
||||
If Not IsNothing(checkboxColumn) Then
|
||||
checkboxColumn.DataType = GetType(Boolean)
|
||||
End If
|
||||
End If
|
||||
|
||||
' Datepicker Spalte auf Date setzen
|
||||
If typeID = 3 And isVisible = True Then
|
||||
dateColumns.Add(columnTitle)
|
||||
End If
|
||||
Dim datepickerColumn As DataColumn = clonedTable.Columns(columnTitle)
|
||||
|
||||
' 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
|
||||
If Not IsNothing(datepickerColumn) Then
|
||||
'datepickerColumn.DataType = GetType(DateTime)
|
||||
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
|
||||
' Tabelle zurückspielen und zuweisen
|
||||
Try
|
||||
clonedTable.Load(DT_RESULT.CreateDataReader())
|
||||
DT_RESULT = clonedTable
|
||||
gridView.GridControl.DataSource = DT_RESULT
|
||||
Catch ex As Exception
|
||||
ClassLogger.Add(">> Attention: Could not load converted datatable DocSearch: " & ex.Message, False)
|
||||
End Try
|
||||
|
||||
gridView.Columns.Item("ICON").MaxWidth = 24
|
||||
gridView.Columns.Item("ICON").MinWidth = 24
|
||||
@ -153,8 +105,6 @@ Public Class ClassWindreamDocGrid
|
||||
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"
|
||||
@ -176,30 +126,104 @@ Public Class ClassWindreamDocGrid
|
||||
changedColumn.DisplayFormat.FormatString = CURRENT_DATE_FORMAT & " HH:MM:ss"
|
||||
End If
|
||||
|
||||
' Für die Dropdown Spalte Änderungen zulassen
|
||||
' Alle Spalten aus ReadOnly setzen, danach werden alle passenden auf nicht ReadOnly gesetzt
|
||||
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
|
||||
column.OptionsColumn.AllowEdit = False
|
||||
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
|
||||
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 isEditable As Boolean = row.Item("EDITABLE")
|
||||
Dim columnTitle As String = row.Item("HEADER_CAPTION")
|
||||
|
||||
' Breite der Spalten setzen
|
||||
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
|
||||
|
||||
If typeID = 1 And isVisible And isEditable Then
|
||||
Dim textedit As New RepositoryItemTextEdit()
|
||||
Dim value As String = ClassDatabase.Execute_Scalar("SELECT VALUE FROM TBPMO_DOC_VALUES WHERE CONFIG_ID = " & guid)
|
||||
Dim col As GridColumn = gridView.Columns(columnTitle)
|
||||
|
||||
gridView.GridControl.RepositoryItems.Add(textedit)
|
||||
|
||||
'Editor zuweisen
|
||||
If Not IsNothing(col) Then
|
||||
col.ColumnEdit = textedit
|
||||
col.OptionsColumn.AllowEdit = True
|
||||
End If
|
||||
|
||||
' Handler zuweisen
|
||||
AddHandler textedit.Leave, _textValueChangedHandler
|
||||
End If
|
||||
|
||||
If typeID = 2 And isVisible And isEditable Then
|
||||
Dim checkEdit As New RepositoryItemCheckEdit()
|
||||
checkEdit.ValueChecked = True
|
||||
checkEdit.ValueUnchecked = False
|
||||
Dim value As String = ClassDatabase.Execute_Scalar("SELECT VALUE FROM TBPMO_DOC_VALUES WHERE CONFIG_ID = " & guid)
|
||||
Dim col As GridColumn = gridView.Columns(columnTitle)
|
||||
|
||||
gridView.GridControl.RepositoryItems.Add(checkEdit)
|
||||
|
||||
If Not IsNothing(col) Then
|
||||
col.OptionsColumn.AllowEdit = True
|
||||
col.ColumnEdit = checkEdit
|
||||
End If
|
||||
End If
|
||||
|
||||
If typeID = 3 And isVisible And isEditable Then
|
||||
Dim dateedit As New RepositoryItemDateEdit()
|
||||
Dim value As String = ClassDatabase.Execute_Scalar("SELECT VALUE FROM TBPMO_DOC_VALUES WHERE CONFIG_ID = " & guid)
|
||||
Dim col As GridColumn = gridView.Columns(columnTitle)
|
||||
|
||||
gridView.GridControl.RepositoryItems.Add(dateedit)
|
||||
|
||||
If Not IsNothing(col) Then
|
||||
col.ColumnEdit = dateedit
|
||||
col.OptionsColumn.AllowEdit = True
|
||||
col.DisplayFormat.FormatType = FormatType.DateTime
|
||||
col.DisplayFormat.FormatString = CURRENT_DATE_FORMAT & " HH:MM:ss"
|
||||
End If
|
||||
|
||||
AddHandler dateedit.EditValueChanged, _datepickerValueChangedHandler
|
||||
End If
|
||||
|
||||
If typeID = 4 And isVisible And isEditable Then
|
||||
Dim dropdown As New RepositoryItemComboBox()
|
||||
|
||||
' Dropdown Items finden
|
||||
Dim matchingRows() As DataRow = DT_DOCRESULT_DROPDOWN_ITEMS.Select(String.Format("CONFIG_ID = {0}", guid), "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
|
||||
|
||||
' Dropdown als Editor hinzufügen
|
||||
gridView.GridControl.RepositoryItems.Add(dropdown)
|
||||
|
||||
Dim col As GridColumn = gridView.Columns(columnTitle)
|
||||
|
||||
'Editor zuweisen
|
||||
If Not IsNothing(col) Then
|
||||
col.ColumnEdit = dropdown
|
||||
End If
|
||||
' Handler zuweisen
|
||||
AddHandler dropdown.SelectedValueChanged, _dropdownValueChangedHandler
|
||||
End If
|
||||
Next
|
||||
|
||||
End Sub
|
||||
|
||||
Public Class WindreamDocGridComboboxItem
|
||||
|
||||
@ -89,6 +89,14 @@ Public Class frmRecordView
|
||||
'Perform your actions
|
||||
End Sub
|
||||
|
||||
Private Sub OnDateSelectedValueChanged(sender As Object, e As EventArgs)
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub OnTextSelectedValueChanged(sender As Object, e As EventArgs)
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub RUN_WDSEARCH_GRID()
|
||||
Me.Cursor = Cursors.WaitCursor
|
||||
Try
|
||||
@ -111,12 +119,14 @@ Public Class frmRecordView
|
||||
tslblWindreamView.Text = msg
|
||||
|
||||
If DT_RESULT.Rows.Count > 0 Then
|
||||
ClassWindreamDocGrid.FormatColumns(
|
||||
ClassWindreamDocGrid.FillColumns(
|
||||
GridViewDoc_Search,
|
||||
DT_RESULT,
|
||||
DT_WINDREAM_RESULTLIST,
|
||||
DT_DOCRESULT_DROPDOWN_ITEMS,
|
||||
AddressOf OnCBSelectedValueChanged)
|
||||
AddressOf OnCBSelectedValueChanged,
|
||||
AddressOf OnDateSelectedValueChanged,
|
||||
AddressOf OnTextSelectedValueChanged)
|
||||
End If
|
||||
Else
|
||||
Dim msg = "Keine Windream-Dokumente für Record: " & JUMP_RECORD_ID & " gefunden"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user