745 lines
34 KiB
VB.net
745 lines
34 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
|
|
Imports DevExpress.XtraGrid.Views.Base
|
|
Imports DevExpress.XtraEditors.Controls
|
|
|
|
Public Class ClassDocGrid
|
|
' === BEGIN CLASS PART ===
|
|
|
|
Public Class clsWMDoc
|
|
Public Property DocId As Integer
|
|
|
|
Public Property ParentID As Integer
|
|
Public Property DocPath As String
|
|
Public Property Filename As String
|
|
Public Property DisplayName As String
|
|
Public Property DocType As String
|
|
Public Property InWork As Boolean
|
|
Public Property InWorkUser As String
|
|
End Class
|
|
|
|
Private ReadOnly GridView As GridView
|
|
|
|
Public ReadOnly Property SelectedDocuments As List(Of clsWMDoc)
|
|
Get
|
|
Return GetSelectedDocuments(GridView)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property HasSelectedDocuments As Boolean
|
|
Get
|
|
Return HasNoSelectedDocuments(GridView)
|
|
End Get
|
|
End Property
|
|
|
|
Public Sub New(pGridView As GridView)
|
|
GridView = pGridView
|
|
End Sub
|
|
|
|
' === END CLASS PART ===
|
|
|
|
Private Shared _Helper As ClassHelper
|
|
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 SELECTED_DOC_RIGHT As Integer
|
|
'Public Shared RESULT_DISPLAYNAME As String
|
|
Public Shared RESULT_CONFIG_IDS As Hashtable
|
|
Private Shared ReadOnly DATE_COLUMNS As New List(Of String)
|
|
Private Shared ReadOnly DATE_COLUMNS_CONFIG As New List(Of String)
|
|
|
|
' This should replace DT_RESULTFILES and also
|
|
' SELECTED_INWORK, SELECTED_DOC_ID, SELECTED_DOC_RIGHT, SELECTED_DOC_PATH
|
|
Public Shared SELECTED_DOCUMENTS As New List(Of clsWMDoc)
|
|
|
|
Public Shared DT_RESULTFILES As DataTable
|
|
Private Shared DT_DROPDOWN_ITEMS As DataTable
|
|
|
|
Private Shared _dropdownValueChangedHandler As EventHandler
|
|
Private Shared _datepickerValueChangedHandler As EventHandler
|
|
Private Shared _textValueChangedHandler As EventHandler
|
|
Private Shared _checkValueChangedHandler As EventHandler
|
|
|
|
Private Shared Function Init_Table()
|
|
Try
|
|
Dim table As New DataTable With {
|
|
.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))
|
|
table.Columns.Add("ACCESS_RIGHT", GetType(Integer))
|
|
DT_RESULTFILES = table
|
|
Return True
|
|
Catch ex As Exception
|
|
LOGGER.Warn("Unexpected Error in Initting TableResult Docs: " & ex.Message)
|
|
DT_RESULTFILES = Nothing
|
|
Return False
|
|
End Try
|
|
|
|
End Function
|
|
|
|
Public Shared Function HasNoSelectedDocuments(pGridView As GridView) As Boolean
|
|
Dim oSelectedRows As List(Of Integer) = pGridView.GetSelectedRows().ToList()
|
|
Return oSelectedRows.Count = 0
|
|
End Function
|
|
Public Shared Function GetSingleSelectedDocument(pGridView As GridView) As List(Of clsWMDoc)
|
|
|
|
If pGridView.RowCount = 0 Then
|
|
Return Nothing
|
|
End If
|
|
Dim oDocuments As New List(Of clsWMDoc)
|
|
Dim oDocId = pGridView.GetRowCellValue(pGridView.FocusedRowHandle, "DocID")
|
|
Dim oSQL = $"Select dwParentID FROM TBPMO_DOCRESULT_LIST where DocID = {oDocId}"
|
|
Dim odwParentID = MYDB_ECM.GetScalarValue(oSQL)
|
|
Dim oDisplayName = pGridView.GetRowCellValue(pGridView.FocusedRowHandle, "Displayname")
|
|
Dim oDocPath = pGridView.GetRowCellValue(pGridView.FocusedRowHandle, "FULLPATH")
|
|
Dim oObjecttype = pGridView.GetRowCellValue(pGridView.FocusedRowHandle, "OBJECTTYPE")
|
|
Dim oFilename = pGridView.GetRowCellValue(pGridView.FocusedRowHandle, "Dateiname")
|
|
Dim oInWork = pGridView.GetRowCellValue(pGridView.FocusedRowHandle, "in work?")
|
|
Dim oInWorkUser = pGridView.GetRowCellValue(pGridView.FocusedRowHandle, "in work User")
|
|
oDocuments.Add(New clsWMDoc With {
|
|
.DocId = oDocId,
|
|
.ParentID = odwParentID,
|
|
.DocPath = oDocPath,
|
|
.DocType = oObjecttype,
|
|
.DisplayName = oDisplayName,
|
|
.Filename = oFilename,
|
|
.InWork = oInWork,
|
|
.InWorkUser = oInWorkUser
|
|
})
|
|
|
|
Return oDocuments
|
|
End Function
|
|
Public Shared Function GetSelectedDocuments(pGridView As GridView, Optional pGetFirst As Boolean = False) As List(Of clsWMDoc)
|
|
Dim oSelectedRows As List(Of Integer)
|
|
If pGridView.RowCount = 0 Then
|
|
Return Nothing
|
|
End If
|
|
If pGetFirst = True Then
|
|
pGridView.FocusedRowHandle = 0
|
|
oSelectedRows = New List(Of Integer) From {0}
|
|
Else
|
|
oSelectedRows = pGridView.GetSelectedRows().ToList()
|
|
End If
|
|
|
|
Dim oDocuments As New List(Of clsWMDoc)
|
|
|
|
For Each oRowHandle In oSelectedRows
|
|
Dim oDocId = pGridView.GetRowCellValue(oRowHandle, "DocID")
|
|
Dim oSQL = $"Select dwParentID FROM TBPMO_DOCRESULT_LIST where DocID = {oDocId}"
|
|
Dim odwParentID = MYDB_ECM.GetScalarValue(oSQL)
|
|
Dim oDisplayName = pGridView.GetRowCellValue(oRowHandle, "Displayname")
|
|
Dim oDocPath = pGridView.GetRowCellValue(oRowHandle, "FULLPATH")
|
|
Dim oObjecttype = pGridView.GetRowCellValue(oRowHandle, "OBJECTTYPE")
|
|
Dim oFilename = pGridView.GetRowCellValue(oRowHandle, "Dateiname")
|
|
Dim oInWork = pGridView.GetRowCellValue(oRowHandle, "in work?")
|
|
Dim oInWorkUser = pGridView.GetRowCellValue(oRowHandle, "in work User")
|
|
oDocuments.Add(New clsWMDoc With {
|
|
.DocId = oDocId,
|
|
.ParentID = odwParentID,
|
|
.DocPath = oDocPath,
|
|
.DocType = oObjecttype,
|
|
.DisplayName = oDisplayName,
|
|
.Filename = oFilename,
|
|
.InWork = oInWork,
|
|
.InWorkUser = oInWorkUser
|
|
})
|
|
Next
|
|
|
|
Return oDocuments
|
|
End Function
|
|
|
|
Public Shared Sub GetDocItems(gridView As GridView)
|
|
|
|
_Helper = New ClassHelper
|
|
If Init_Table() = True Then
|
|
Console.WriteLine("gridView.SelectedRowsCount: " & gridView.SelectedRowsCount.ToString)
|
|
gridView.EndSelection()
|
|
|
|
If gridView.SelectedRowsCount >= 1 Then
|
|
DT_RESULTFILES.Clear()
|
|
For Each row In gridView.GetSelectedRows
|
|
Dim newRow As DataRow = DT_RESULTFILES.NewRow()
|
|
Dim oDocID = gridView.GetRowCellValue(row, "DocID")
|
|
Dim CHeckDT As DataTable = ClassHelper.FILTER_DATATABLE(CURRENT_DT_TBPMO_DOC_RECORD_LINK, "DOC_ID = " + oDocID.ToString, "")
|
|
Try
|
|
newRow("INWORK") = False
|
|
SELECTED_INWORK = False
|
|
Dim oSQL = "Select IN_WORK,IN_WORK_USER FROM TBPMO_DOCRESULT_LIST where DocID = " + oDocID
|
|
Dim oDT As DataTable = MYDB_ECM.GetDatatable(oSQL)
|
|
If Not IsNothing(oDT) Then
|
|
If oDT.Rows.Count = 1 Then
|
|
newRow("INWORK") = CBool(oDT.Rows(0).Item("IN_WORK"))
|
|
SELECTED_INWORK = CBool(oDT.Rows(0).Item("IN_WORK"))
|
|
End If
|
|
End If
|
|
Catch ex As Exception
|
|
newRow("INWORK") = False
|
|
SELECTED_INWORK = False
|
|
End Try
|
|
|
|
Try
|
|
SELECTED_DOC_RIGHT = gridView.GetRowCellValue(row, "ACCESS_RIGHT")
|
|
newRow("ACCESS_RIGHT") = gridView.GetRowCellValue(row, SELECTED_DOC_RIGHT)
|
|
Catch ex As Exception
|
|
newRow("ACCESS_RIGHT") = 1
|
|
End Try
|
|
Try
|
|
SELECTED_DOC_PATH = _Helper.FORMAT_WM_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
|
|
Dim dpn = gridView.GetRowCellValue(row, "Displayname")
|
|
If IsDBNull(dpn) Or IsNothing(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
|
|
SELECTED_DOC_ID = 0
|
|
End Try
|
|
Try
|
|
SELECTED_DOC_PATH = gridView.GetFocusedRowCellValue(gridView.Columns("FULLPATH"))
|
|
If IsNothing(SELECTED_DOC_PATH) Then
|
|
SELECTED_DOC_PATH = gridView.GetFocusedRowCellValue(gridView.Columns("FULL_FILENAME"))
|
|
newRow("DOC_PATH") = gridView.GetFocusedRowCellValue(gridView.Columns("FULL_FILENAME"))
|
|
Else
|
|
newRow("DOC_PATH") = gridView.GetFocusedRowCellValue(gridView.Columns("FULLPATH"))
|
|
End If
|
|
|
|
Catch ex As Exception
|
|
Try
|
|
|
|
Catch ex1 As Exception
|
|
newRow("DOC_PATH") = ""
|
|
End Try
|
|
|
|
End Try
|
|
Try
|
|
newRow("OBJECTTYPE") = gridView.GetFocusedRowCellValue(gridView.Columns("OBJECTTYPE"))
|
|
Catch ex As Exception
|
|
newRow("OBJECTTYPE") = ""
|
|
End Try
|
|
|
|
Try
|
|
Dim dpn = gridView.GetFocusedRowCellValue(gridView.Columns("Displayname"))
|
|
If IsDBNull(dpn) Or IsNothing(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
|
|
End Sub
|
|
|
|
Public Shared Sub FillColumns(pDocGridView 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, CheckValueChangedHandler As EventHandler,
|
|
SearchType As String, RECORD_ID As Integer)
|
|
' Handler speichern
|
|
_dropdownValueChangedHandler = DropdownValueChangedHandler
|
|
_datepickerValueChangedHandler = DatepickerValueChangedHandler
|
|
_textValueChangedHandler = TextValueChangedHandler
|
|
_checkValueChangedHandler = CheckValueChangedHandler
|
|
|
|
'Dropdown Tabelle speichern
|
|
DT_DROPDOWN_ITEMS = DT_DOCRESULT_DROPDOWN_ITEMS
|
|
|
|
' Tabelle vor dem verändern klonen
|
|
Dim clonedTable As DataTable = DT_RESULT.Clone()
|
|
|
|
RESULT_CONFIG_IDS = New Hashtable()
|
|
|
|
For Each row As DataRow In DT_WINDREAM_RESULTLIST.Rows
|
|
Dim isConfig As Boolean = row.Item("CONFIG_COLUMNS")
|
|
Dim guid As Integer = row.Item("GUID")
|
|
Dim columnTitle As String = row.Item("HEADER_CAPTION")
|
|
Dim type As Integer = row.Item("TYPE_ID")
|
|
|
|
|
|
If type = 3 And isConfig = False Then
|
|
DATE_COLUMNS.Add(columnTitle)
|
|
ElseIf type = 3 And isConfig = True Then
|
|
DATE_COLUMNS_CONFIG.Add(columnTitle)
|
|
End If
|
|
|
|
If isConfig = True Then
|
|
RESULT_CONFIG_IDS.Add(columnTitle, guid)
|
|
End If
|
|
Next
|
|
|
|
' Tabelle zurückspielen und zuweisen
|
|
Try
|
|
clonedTable.Load(DT_RESULT.CreateDataReader())
|
|
DT_RESULT = clonedTable
|
|
|
|
' Neues Dataset für Master- und Detail-Tabelle erstellen
|
|
Dim ds As New DataSet()
|
|
Dim DT_DETAILS_SQL
|
|
|
|
Select Case CURRENT_SEARCH_TYPE
|
|
Case "NODE_DOWN"
|
|
DT_DETAILS_SQL = String.Format("SELECT T.[GUID],T.[DocID],T.[CONFIG_ID],T1.HEADER_CAPTION,T.[VALUE],T1.[LANGUAGE], T1.COLUMN_VIEW,T1.EDITABLE,T1.TYPE_ID,T1.VISIBLE,T.CHANGED_WHEN,T.CHANGED_WHO " &
|
|
"FROM TBPMO_DOC_VALUES T INNER JOIN TBPMO_STRUCTURE_NODES_USER_TEMP TTEMP ON T.RECORD_ID = TTEMP.RECORD_ID RIGHT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG T1 ON T.CONFIG_ID = T1.GUID WHERE T1.ENTITY_ID = {0} AND LANGUAGE = '{1}' AND T1.CONFIG_COLUMNS = 1", CURRENT_ENTITY_ID, USER_LANGUAGE)
|
|
|
|
Case Else
|
|
DT_DETAILS_SQL = String.Format("SELECT T.[GUID],T.[DocID],T.[CONFIG_ID],T1.HEADER_CAPTION,T.[VALUE],T1.[LANGUAGE], T1.COLUMN_VIEW,T1.EDITABLE,T1.TYPE_ID,T1.VISIBLE,T.CHANGED_WHEN,T.CHANGED_WHO " &
|
|
"FROM TBPMO_DOC_VALUES T RIGHT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG T1 ON T.CONFIG_ID = T1.GUID WHERE T1.ENTITY_ID = {0} AND LANGUAGE = '{1}' AND T1.CONFIG_COLUMNS = 1 AND T.RECORD_ID = {2}", CURRENT_ENTITY_ID, USER_LANGUAGE, RECORD_ID)
|
|
|
|
End Select
|
|
'"FROM TBPMO_DOC_VALUES T INNER JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG T1 ON T.CONFIG_ID = T1.GUID WHERE T1.ENTITY_ID = {0} AND T1.LANGUAGE = '{1}' AND T.RECORD_ID = {2} ORDER BY T.DocID, T1.SEQUENCE", CURRENT_ENTITY_ID, USER_LANGUAGE, RECORD_ID)
|
|
|
|
Dim DT_DETAIL_VALUES As DataTable = MYDB_ECM.GetDatatable(DT_DETAILS_SQL)
|
|
Dim oDocID As Integer
|
|
Dim oConfigID As Integer
|
|
Dim recordId As Integer
|
|
Try
|
|
' Werte für Konfigurierte Spalten aus TBPMO_DOC_VALUES auslesen und Zellenweise einfügen
|
|
For Each oRow As DataRow In DT_RESULT.Rows
|
|
For Each col As DataColumn In DT_RESULT.Columns
|
|
Dim colName As String = col.ColumnName
|
|
oDocID = oRow.Item("DocID")
|
|
oConfigID = RESULT_CONFIG_IDS.Item(col.ColumnName)
|
|
|
|
If oConfigID <> 0 Then
|
|
Dim value As String = ""
|
|
|
|
Try
|
|
Dim oFilter = $"DocID = {oDocID} AND CONFIG_ID = {oConfigID}"
|
|
Dim oFlteredRows() As DataRow = DT_DETAIL_VALUES.Select(oFilter)
|
|
If oFlteredRows.Length > 0 Then
|
|
value = oFlteredRows(0)("VALUE").ToString()
|
|
End If
|
|
|
|
|
|
'value = MYDB_ECM.GetScalarValue(String.Format("SELECT VALUE FROM TBPMO_DOC_VALUES WHERE CONFIG_ID = {0} AND DocID = {1} AND RECORD_ID = {2}", oConfigID, oDocID, RECORD_ID))
|
|
Catch ex As Exception
|
|
LOGGER.Warn(String.Format("Attention: Could not get Value from TBPMO_DOC_VALUES for ConfigId[{0}], DocId[{1}]: ", oConfigID, oDocID) & ex.Message)
|
|
End Try
|
|
|
|
oRow.Item(colName) = value
|
|
End If
|
|
Next
|
|
Next
|
|
Catch ex As Exception
|
|
LOGGER.Warn($"Attention: Could not load values from TBPMO_DOC_VALUES: " & ex.Message & vbNewLine & $"SELECT VALUE FROM TBPMO_DOC_VALUES WHERE CONFIG_ID = {oConfigID} AND DocID = {oDocID} AND RECORD_ID = {RECORD_ID}")
|
|
End Try
|
|
LOGGER.Debug("Values loaded...")
|
|
Try
|
|
' Tabellen zum DataSet hinzufügen
|
|
ds.Tables.Add(DT_RESULT)
|
|
ds.Tables.Add(DT_DETAIL_VALUES)
|
|
LOGGER.Debug("tables added to ds.Tables...")
|
|
Catch ex As Exception
|
|
LOGGER.Warn("Attention: Could not Add tables to ds.Tables: " & ex.Message)
|
|
End Try
|
|
|
|
Try
|
|
Dim resultTable As DataTable = ds.Tables(0)
|
|
Dim detailsTable As DataTable = ds.Tables(1)
|
|
|
|
' Relation `docIdDetails` erstellen
|
|
Dim parentColumn As DataColumn = resultTable.Columns("docId")
|
|
Dim childColumn As DataColumn = detailsTable.Columns("docId")
|
|
LOGGER.Debug("tables added to ds.Tables...")
|
|
LOGGER.Debug($"parentColumn.DataType: {parentColumn.DataType.ToString()}")
|
|
LOGGER.Debug($"childColumn.DataType: {childColumn.DataType.ToString()}")
|
|
' Unique Constraint für DT_RESULT auf Spalte `docId` erstellen
|
|
Dim uniqueConstraint As UniqueConstraint = New UniqueConstraint(parentColumn)
|
|
resultTable.Constraints.Add(uniqueConstraint)
|
|
|
|
' Parameter `createConstraints` auf false setzen, um erstellung eines unsinnigen
|
|
' `foreignKeyConstraints` zu verhindern
|
|
ds.Relations.Add("docIdDetails", parentColumn, childColumn, False)
|
|
LOGGER.Debug("relationdocIdDetails created...")
|
|
Catch ex As Exception
|
|
LOGGER.Warn("Could not set master-detail Relation DocSearch: " & ex.Message)
|
|
End Try
|
|
|
|
Dim gridControl As GridControl = pDocGridView.GridControl
|
|
|
|
|
|
' Datasource auf Master-Tabelle setzen
|
|
'gridView.GridControl.DataSource = DT_RESULT
|
|
gridControl.DataSource = ds.Tables(0)
|
|
gridControl.ForceInitialize()
|
|
|
|
' Detail View anlegen und der Relation `docIdDetails` zuweisen
|
|
Dim GVDoc_Values As New GridView(gridControl)
|
|
'grvwDetail.OptionsBehavior.Editable = False
|
|
GVDoc_Values.OptionsView.ShowGroupPanel = False
|
|
GVDoc_Values.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.Style3D
|
|
GVDoc_Values.OptionsView.EnableAppearanceEvenRow = True
|
|
GVDoc_Values.Appearance.EvenRow.BackColor = Color.Orange
|
|
GVDoc_Values.Appearance.HeaderPanel.BackColor = Color.Orange
|
|
GVDoc_Values.Appearance.HeaderPanel.Options.UseBackColor = True
|
|
|
|
|
|
gridControl.LevelTree.Nodes.Add("docIdDetails", GVDoc_Values)
|
|
Catch ex As Exception
|
|
MsgBox("Error in FillColumns: " & vbNewLine & ex.Message, MsgBoxStyle.Critical)
|
|
LOGGER.Warn("Attention: Could not load converted datatable DocSearch: " & ex.Message)
|
|
End Try
|
|
|
|
AddHandler pDocGridView.MasterRowExpanded, AddressOf gridView_MasterRowExpanded
|
|
AddHandler pDocGridView.CustomColumnDisplayText, AddressOf gridView_CustomColumnDisplayText
|
|
AddHandler pDocGridView.FocusedRowChanged, AddressOf GVDoc_Values_FocusedRowChanged
|
|
|
|
|
|
For Each row As DataRow In DT_WINDREAM_RESULTLIST.Rows
|
|
Dim col As GridColumn = pDocGridView.Columns(row.Item("HEADER_CAPTION"))
|
|
Dim colCaption = row.Item("HEADER_CAPTION")
|
|
Dim type As Integer = row.Item("TYPE_ID")
|
|
Dim isConfig As Boolean = row.Item("CONFIG_COLUMNS")
|
|
|
|
If Not IsNothing(col) And type = 3 And isConfig Then
|
|
LOGGER.Debug($"Adapting DisplayFormat (DATETIME for Column {colCaption}")
|
|
col.DisplayFormat.FormatType = FormatType.DateTime
|
|
col.DisplayFormat.FormatString = CURRENT_DATE_FORMAT & " HH:MM:ss"
|
|
End If
|
|
Next
|
|
|
|
pDocGridView.Columns.Item("ICON").MaxWidth = 24
|
|
pDocGridView.Columns.Item("ICON").MinWidth = 24
|
|
pDocGridView.Columns.Item("FULLPATH").Visible = False
|
|
pDocGridView.Columns.Item("OBJECTTYPE").Visible = False
|
|
If Not System.IO.File.Exists(LAYOUT_DOC_GRIDVIEW) Then
|
|
pDocGridView.Columns.Item("DocID").Visible = False
|
|
End If
|
|
|
|
Dim oCreatedFieldName, oChangedFieldName As String
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
oChangedFieldName = "Changed"
|
|
oCreatedFieldName = "Created"
|
|
Else
|
|
oChangedFieldName = "Geändert"
|
|
oCreatedFieldName = "Erstellt"
|
|
End If
|
|
|
|
Dim oCreatedColumn = pDocGridView.Columns(oCreatedFieldName)
|
|
If Not IsNothing(oCreatedColumn) Then
|
|
oCreatedColumn.DisplayFormat.FormatType = FormatType.DateTime
|
|
oCreatedColumn.DisplayFormat.FormatString = CURRENT_DATE_FORMAT & " HH:MM:ss"
|
|
End If
|
|
|
|
Dim oChangedColumn = pDocGridView.Columns(oChangedFieldName)
|
|
If Not IsNothing(oChangedColumn) Then
|
|
oChangedColumn.DisplayFormat.FormatType = FormatType.DateTime
|
|
oChangedColumn.DisplayFormat.FormatString = CURRENT_DATE_FORMAT & " HH:MM:ss"
|
|
End If
|
|
|
|
If GridDocResult_BestFitColumns Then
|
|
pDocGridView.OptionsView.BestFitMaxRowCount = -1
|
|
pDocGridView.BestFitColumns(True)
|
|
End If
|
|
|
|
' Alle Spalten aus ReadOnly setzen, danach werden alle passenden auf nicht ReadOnly gesetzt
|
|
For Each column As GridColumn In pDocGridView.Columns
|
|
column.OptionsColumn.AllowEdit = False
|
|
Next
|
|
End Sub
|
|
|
|
Public Shared Sub detailView_CustomRowCellEdit(grvw As GridView, e As CustomRowCellEditEventArgs)
|
|
Try
|
|
If (e.Column.Name = "colVALUE") Then
|
|
Dim rowView As DataRowView = grvw.GetRow(e.RowHandle)
|
|
Dim configId As Integer = rowView.Item("CONFIG_ID")
|
|
Dim title = rowView.Item("HEADER_CAPTION")
|
|
Dim editable As Boolean = rowView.Item("EDITABLE")
|
|
Dim typeId As Integer = rowView.Item("TYPE_ID")
|
|
|
|
If typeId = 1 And editable Then
|
|
Dim textedit As New RepositoryItemTextEdit()
|
|
|
|
AddHandler textedit.Leave, _textValueChangedHandler
|
|
|
|
e.RepositoryItem = textedit
|
|
ElseIf typeId = 2 Then
|
|
Dim checkEdit As New RepositoryItemCheckEdit()
|
|
checkEdit.ValueChecked = "True"
|
|
checkEdit.ValueUnchecked = "False"
|
|
checkEdit.GlyphAlignment = HorzAlignment.Near
|
|
checkEdit.Caption = String.Empty
|
|
|
|
AddHandler checkEdit.CheckedChanged, _checkValueChangedHandler
|
|
|
|
e.RepositoryItem = checkEdit
|
|
ElseIf typeId = 3 Then
|
|
Dim dateedit As New RepositoryItemDateEdit()
|
|
|
|
dateedit.DisplayFormat.FormatType = FormatType.DateTime
|
|
dateedit.DisplayFormat.FormatString = CURRENT_DATE_FORMAT
|
|
dateedit.EditFormat.FormatType = FormatType.DateTime
|
|
dateedit.EditFormat.FormatString = CURRENT_DATE_FORMAT
|
|
dateedit.EditMask = CURRENT_DATE_FORMAT
|
|
|
|
AddHandler dateedit.FormatEditValue, Sub(sender As Object, _e As ConvertEditValueEventArgs)
|
|
_e.Handled = True
|
|
End Sub
|
|
|
|
AddHandler dateedit.CustomDisplayText, Sub(sender As Object, _e As Controls.CustomDisplayTextEventArgs)
|
|
Dim parsedDate As DateTime
|
|
Dim stringDate As String = _e.Value.ToString
|
|
If stringDate.Trim() = String.Empty Then
|
|
_e.DisplayText = ""
|
|
Else
|
|
If Not DateTime.TryParse(stringDate, parsedDate) Then
|
|
parsedDate = DateTime.ParseExact(stringDate, CURRENT_DATE_FORMAT, Globalization.DateTimeFormatInfo.InvariantInfo)
|
|
End If
|
|
_e.DisplayText = parsedDate.ToString(CURRENT_DATE_FORMAT)
|
|
End If
|
|
End Sub
|
|
|
|
AddHandler dateedit.EditValueChanged, _datepickerValueChangedHandler
|
|
e.RepositoryItem = dateedit
|
|
ElseIf typeId = 10 And editable = True Then
|
|
Dim dropdown As New RepositoryItemComboBox()
|
|
Dim matchingRows() As DataRow = DT_DROPDOWN_ITEMS.Select(String.Format("CONFIG_ID = {0}", configId), "SEQUENCE")
|
|
|
|
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
|
|
|
|
AddHandler dropdown.SelectedValueChanged, _dropdownValueChangedHandler
|
|
|
|
e.RepositoryItem = dropdown
|
|
|
|
|
|
ElseIf typeId = 4 And editable Then
|
|
Dim textedit As New RepositoryItemTextEdit()
|
|
|
|
AddHandler textedit.Leave, _textValueChangedHandler
|
|
|
|
e.RepositoryItem = textedit
|
|
|
|
End If
|
|
ElseIf (e.Column.Name <> "colVALUE") Then
|
|
' Erlaube Editieren nur für VALUE Spalte
|
|
e.Column.OptionsColumn.AllowEdit = False
|
|
End If
|
|
Catch ex As Exception
|
|
LOGGER.Warn("Error in detailView_CustomRowCellEdit: " & ex.Message)
|
|
End Try
|
|
|
|
End Sub
|
|
|
|
Private Shared Sub gridView_CustomColumnDisplayText(sender As Object, e As CustomColumnDisplayTextEventArgs)
|
|
Try
|
|
Dim view As ColumnView = sender
|
|
Dim parsedDate As DateTime
|
|
If Not IsNothing(DATE_COLUMNS) Then
|
|
If DATE_COLUMNS.Contains(e.Column.FieldName) And e.ListSourceRowIndex <> DevExpress.XtraGrid.GridControl.InvalidRowHandle Then
|
|
LOGGER.Debug($"gridView_CustomColumnDisplayText1 [{e.Column.FieldName}] ")
|
|
If e.Value.ToString() = String.Empty Then
|
|
e.DisplayText = ""
|
|
Exit Sub
|
|
End If
|
|
|
|
If Not DateTime.TryParse(e.Value, parsedDate) Then
|
|
parsedDate = DateTime.ParseExact(e.Value, CURRENT_DATE_FORMAT & " HH:MM:ss", System.Globalization.DateTimeFormatInfo.InvariantInfo)
|
|
End If
|
|
|
|
e.DisplayText = parsedDate.ToString(CURRENT_DATE_FORMAT & " HH:MM:ss")
|
|
|
|
End If
|
|
End If
|
|
If Not IsNothing(DATE_COLUMNS_CONFIG) Then
|
|
If DATE_COLUMNS_CONFIG.Contains(e.Column.FieldName) And e.ListSourceRowIndex <> DevExpress.XtraGrid.GridControl.InvalidRowHandle Then
|
|
If e.Value.ToString() = String.Empty Then
|
|
e.DisplayText = ""
|
|
Exit Sub
|
|
End If
|
|
LOGGER.Debug($"gridView_CustomColumnDisplayText2 [{e.Column.FieldName}] ")
|
|
If Not DateTime.TryParse(e.Value, parsedDate) Then
|
|
parsedDate = DateTime.ParseExact(e.Value, CURRENT_DATE_FORMAT, System.Globalization.DateTimeFormatInfo.InvariantInfo)
|
|
End If
|
|
|
|
e.DisplayText = parsedDate.ToString(CURRENT_DATE_FORMAT)
|
|
End If
|
|
End If
|
|
Catch ex As Exception
|
|
LOGGER.Warn("Unexpected error in gridView_CustomColumnDisplayText: " & ex.Message)
|
|
End Try
|
|
|
|
End Sub
|
|
Public Shared Sub GVDoc_Values_FocusedRowChanged(sender As GridView, e As DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs)
|
|
Try
|
|
ClassDocGrid.GetDocItems(sender)
|
|
|
|
|
|
Catch ex As Exception
|
|
LOGGER.Warn("Unexpected error in GVDoc_Values_FocusedRowChanged: " & ex.Message)
|
|
MsgBox("Unexpected error in GVDoc_Values_FocusedRowChanged: " & ex.Message, MsgBoxStyle.Critical)
|
|
End Try
|
|
End Sub
|
|
Public Shared Sub gridView_MasterRowExpanded(sender As GridView, e As DevExpress.XtraGrid.Views.Grid.CustomMasterRowEventArgs)
|
|
Try
|
|
ClassDocGrid.GetDocItems(sender)
|
|
Dim GW As GridView = sender
|
|
If SELECTED_DOC_ID = 0 Then
|
|
MsgBox("Sorry no document was selected! Please try again!", MsgBoxStyle.Exclamation)
|
|
Exit Sub
|
|
End If
|
|
|
|
Dim detailView As GridView = sender.GetDetailView(e.RowHandle, e.RelationIndex)
|
|
With detailView.Columns
|
|
'Spalten ausblenden
|
|
.Item("GUID").Visible = False
|
|
.Item("DocID").Visible = False
|
|
.Item("CONFIG_ID").Visible = False
|
|
.Item("LANGUAGE").Visible = False
|
|
.Item("COLUMN_VIEW").Visible = False
|
|
.Item("EDITABLE").Visible = False
|
|
.Item("TYPE_ID").Visible = False
|
|
.Item("VISIBLE").Visible = False
|
|
|
|
'Spalten formatieren
|
|
|
|
.Item("CHANGED_WHEN").DisplayFormat.FormatType = FormatType.DateTime
|
|
.Item("CHANGED_WHEN").DisplayFormat.FormatString = CURRENT_DATE_FORMAT & " HH:MM:ss"
|
|
|
|
If USER_LANGUAGE = "de-DE" Then
|
|
.Item("HEADER_CAPTION").Caption = "Beschreibung"
|
|
.Item("VALUE").Caption = "Wert"
|
|
.Item("CHANGED_WHEN").Caption = "Geändert Wann"
|
|
.Item("CHANGED_WHO").Caption = "Geändert Wer"
|
|
Else
|
|
.Item("HEADER_CAPTION").Caption = "Description"
|
|
.Item("VALUE").Caption = "Value"
|
|
.Item("CHANGED_WHEN").Caption = "Changed when"
|
|
.Item("CHANGED_WHO").Caption = "changed Who"
|
|
End If
|
|
End With
|
|
If Not IsNothing(GW.GridControl.ContextMenuStrip.Name) Then
|
|
If GW.GridControl.ContextMenuStrip.Name = "cmsResultFilesBasic" Then
|
|
detailView.OptionsBehavior.Editable = False
|
|
Else
|
|
detailView.OptionsBehavior.Editable = True
|
|
End If
|
|
End If
|
|
AddHandler detailView.CustomRowCellEdit, AddressOf detailView_CustomRowCellEdit
|
|
Catch ex As Exception
|
|
LOGGER.Warn("Unexpected error in gridView_MasterRowExpanded: " & ex.Message)
|
|
MsgBox("Unexpected error in gridView_MasterRowExpanded: " & ex.Message, MsgBoxStyle.Critical)
|
|
End Try
|
|
|
|
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
|