Files
RecordOrganizer/app/DD-Record-Organiser/ClassWindreamDocGrid.vb
SchreiberM 51bd2cdb1d MS
2016-09-27 13:23:30 +02:00

419 lines
17 KiB
VB.net

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 SELECTED_DOC_PATH As String
'Public Shared RESULT_OBJECTTYPE As String
Public Shared SELECTED_INWORK As Boolean
Public Shared SELECTED_DOC_ID As Integer
'Public Shared RESULT_DISPLAYNAME As String
Public Shared RESULT_CONFIG_IDS As Hashtable
Public Shared DT_RESULTFILES As DataTable
Private Shared _dropdownValueChangedHandler As EventHandler
Private Shared _datepickerValueChangedHandler As EventHandler
Private Shared _textValueChangedHandler As EventHandler
Private Shared Function Init_Table()
Try
Dim table As New DataTable
table.TableName = "TBSELECTED_FILES"
' Create two columns, ID and Name.
table.Columns.Add("DOC_ID", GetType(Integer))
table.Columns.Add("DOC_PATH", GetType(System.String))
table.Columns.Add("OBJECTTYPE", GetType(System.String))
table.Columns.Add("INWORK", GetType(System.Boolean))
table.Columns.Add("DISPLAYNAME", GetType(System.String))
DT_RESULTFILES = table
Return True
Catch ex As Exception
ClassLogger.Add("Unexpected Error in Initting TableResult Docs: " & ex.Message, True)
DT_RESULTFILES = Nothing
Return False
End Try
End Function
Public Shared Sub GetDocItems(gridView As GridView)
If Init_Table() = True Then
If gridView.SelectedRowsCount > 0 Then
DT_RESULTFILES.Clear()
For Each row In gridView.GetSelectedRows
Dim newRow As DataRow = DT_RESULTFILES.NewRow()
Try
Dim DOC_ID = gridView.GetRowCellValue(row, "DocID")
SELECTED_DOC_ID = DOC_ID
newRow("DOC_ID") = gridView.GetRowCellValue(row, "DocID")
Catch ex As Exception
newRow("DOC_ID") = 0
End Try
Try
SELECTED_DOC_PATH = gridView.GetRowCellValue(row, "FULLPATH")
newRow("DOC_PATH") = gridView.GetRowCellValue(row, "FULLPATH")
Catch ex As Exception
newRow("DOC_PATH") = ""
End Try
Try
newRow("OBJECTTYPE") = gridView.GetRowCellValue(row, "OBJECTTYPE")
Catch ex As Exception
newRow("OBJECTTYPE") = ""
End Try
Try
newRow("INWORK") = gridView.GetRowCellValue(row, "in work?")
Catch ex As Exception
newRow("INWORK") = False
End Try
Try
Dim dpn = gridView.GetRowCellValue(row, "Displayname")
If IsDBNull(dpn) Then
dpn = ""
End If
newRow("DISPLAYNAME") = dpn
Catch ex As Exception
newRow("DISPLAYNAME") = ""
End Try
DT_RESULTFILES.Rows.Add(newRow)
DT_RESULTFILES.AcceptChanges()
Next
Else
Dim newRow As DataRow = DT_RESULTFILES.NewRow()
Try
Dim DOC_ID = gridView.GetFocusedRowCellValue(gridView.Columns("DocID"))
SELECTED_DOC_ID = DOC_ID
newRow("DOC_ID") = gridView.GetFocusedRowCellValue(gridView.Columns("DocID"))
Catch ex As Exception
newRow("DOC_ID") = 0
End Try
Try
SELECTED_DOC_PATH = gridView.GetFocusedRowCellValue(gridView.Columns("FULLPATH"))
newRow("DOC_PATH") = gridView.GetFocusedRowCellValue(gridView.Columns("FULLPATH"))
Catch ex As Exception
newRow("DOC_PATH") = ""
End Try
Try
newRow("OBJECTTYPE") = gridView.GetFocusedRowCellValue(gridView.Columns("OBJECTTYPE"))
Catch ex As Exception
newRow("OBJECTTYPE") = ""
End Try
Try
newRow("INWORK") = gridView.GetFocusedRowCellValue(gridView.Columns("in work?"))
Catch ex As Exception
newRow("INWORK") = False
End Try
Try
Dim dpn = gridView.GetFocusedRowCellValue(gridView.Columns("Displayname"))
If IsDBNull(dpn) Then
dpn = ""
End If
newRow("DISPLAYNAME") = dpn
Catch ex As Exception
newRow("DISPLAYNAME") = ""
End Try
DT_RESULTFILES.Rows.Add(newRow)
DT_RESULTFILES.AcceptChanges()
End If
End If
'If gridView.SelectedRowsCount = 1 Then
' 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
'Else
'End If
End Sub
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 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")
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
Dim datepickerColumn As DataColumn = clonedTable.Columns(columnTitle)
If Not IsNothing(datepickerColumn) Then
'datepickerColumn.DataType = GetType(DateTime)
End If
End If
Next
' 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
gridView.Columns.Item("FULLPATH").Visible = False
gridView.Columns.Item("OBJECTTYPE").Visible = False
gridView.Columns.Item("DocID").Visible = False
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
' Alle Spalten aus ReadOnly setzen, danach werden alle passenden auf nicht ReadOnly gesetzt
For Each column As GridColumn In gridView.Columns
column.OptionsColumn.AllowEdit = False
Next
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 Then
Dim checkEdit As New RepositoryItemCheckEdit()
checkEdit.ValueChecked = True
checkEdit.ValueUnchecked = False
Dim col As GridColumn = gridView.Columns(columnTitle)
gridView.GridControl.RepositoryItems.Add(checkEdit)
If Not IsNothing(col) Then
col.ColumnEdit = checkEdit
If isEditable Then
col.OptionsColumn.AllowEdit = True
Else
col.OptionsColumn.AllowEdit = False
End If
End If
End If
If typeID = 3 And isVisible And isEditable Then
Dim dateedit As New RepositoryItemDateEdit()
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.OptionsColumn.AllowEdit = True
col.ColumnEdit = dropdown
End If
' Handler zuweisen
AddHandler dropdown.SelectedValueChanged, _dropdownValueChangedHandler
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