jj 09.11 docgrid

This commit is contained in:
JenneJ 2016-11-09 11:07:26 +01:00
parent b6d9a7952e
commit b96fa6fe69
3 changed files with 150 additions and 145 deletions

View File

@ -14,10 +14,13 @@ Public Class ClassWindreamDocGrid
Public Shared RESULT_CONFIG_IDS As Hashtable
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
@ -121,11 +124,18 @@ Public Class ClassWindreamDocGrid
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, SearchType As 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, CheckValueChangedHandler As EventHandler,
SearchType As String)
' 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()
@ -133,38 +143,38 @@ Public Class ClassWindreamDocGrid
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
If SearchType = "RECORD" Then
isEditable = row.Item("EDITABLE")
Else
isEditable = False
End If
Dim columnTitle As String = row.Item("HEADER_CAPTION")
'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
' If SearchType = "RECORD" Then
' isEditable = row.Item("EDITABLE")
' Else
' isEditable = False
' End If
' Dim columnTitle As String = row.Item("HEADER_CAPTION")
RESULT_CONFIG_IDS.Add(columnTitle, guid)
' RESULT_CONFIG_IDS.Add(columnTitle, guid)
' Checkbox Spalte auf Boolean setzen
If typeID = 2 And isVisible Then
Dim checkboxColumn As DataColumn = clonedTable.Columns(columnTitle)
' ' 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
' 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)
' ' 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
' If Not IsNothing(datepickerColumn) Then
' 'datepickerColumn.DataType = GetType(DateTime)
' End If
' End If
'Next
' Tabelle zurückspielen und zuweisen
Try
@ -174,44 +184,27 @@ Public Class ClassWindreamDocGrid
' Neues Dataset für Master- und Detail-Tabelle erstellen
Dim ds As New DataSet()
'###
'### Dummy Code
'###
' Detail Tabelle mit dummy Spalten erstellen
Dim DT_DETAILS As New DataTable("DETAILS")
DT_DETAILS.Columns.Add("docId", GetType(String))
DT_DETAILS.Columns.Add("Value", GetType(String))
' Ein paar Rows hinzufügen, docId verweist auf Master-Tabelle
DT_DETAILS.Rows.Add(220768, "test")
DT_DETAILS.Rows.Add(220768, "haha")
DT_DETAILS.Rows.Add(220777, "test1")
DT_DETAILS.Rows.Add(220777, "test2")
DT_DETAILS.Rows.Add(220777, "test3")
DT_DETAILS.Rows.Add(220778, "test2")
'###
'### Dummy Code END
'###
Dim 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 " &
"FROM TBPMO_DOC_VALUES T INNER JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG T1 ON T.CONFIG_ID = T1.GUID WHERE T1.ENTITY_ID = {0} AND LANGUAGE = '{1}'", CURRENT_FORM_ID, USER_LANGUAGE)
Dim DT_DETAILS As DataTable = ClassDatabase.Return_Datatable(DT_DETAILS_SQL)
' Tabellen zum DataSet hinzufügen
ds.Tables.Add(DT_RESULT)
ds.Tables.Add(DT_DETAILS)
' Relation `docIdDetails` erstellen
Dim keyColumn As DataColumn = ds.Tables(0).Columns("docId")
Dim foreignColumn As DataColumn = ds.Tables(1).Columns("docId")
Dim parentColumn As DataColumn = ds.Tables(0).Columns("docId")
Dim childColumn As DataColumn = ds.Tables(1).Columns("docId")
Try
ds.Relations.Add("docIdDetails", keyColumn, foreignColumn)
ds.Relations.Add("docIdDetails", parentColumn, childColumn)
Catch ex As Exception
ClassLogger.Add(">> Could not set master-detail Relation DocSearch: " & ex.Message, False)
End Try
Dim gridControl As GridControl = gridView.GridControl
' Datasource auf Master-Tabelle setzen
'gridView.GridControl.DataSource = DT_RESULT
gridControl.DataSource = ds.Tables(0)
@ -219,7 +212,7 @@ Public Class ClassWindreamDocGrid
' Detail View anlegen und der Relation `docIdDetails` zuweisen
Dim grvwDetail As New GridView(gridControl)
grvwDetail.OptionsBehavior.Editable = False
'grvwDetail.OptionsBehavior.Editable = False
grvwDetail.OptionsView.ShowGroupPanel = False
grvwDetail.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.Style3D
grvwDetail.OptionsView.EnableAppearanceEvenRow = True
@ -227,12 +220,14 @@ Public Class ClassWindreamDocGrid
grvwDetail.Appearance.HeaderPanel.BackColor = Color.Aqua
grvwDetail.Appearance.HeaderPanel.Options.UseBackColor = True
gridControl.LevelTree.Nodes.Add("docIdDetails", grvwDetail)
Catch ex As Exception
MsgBox("Error in FillColumns: " & vbNewLine & ex.Message, MsgBoxStyle.Critical)
ClassLogger.Add(">> Attention: Could not load converted datatable DocSearch: " & ex.Message, False)
End Try
AddHandler gridView.MasterRowExpanded, AddressOf gridView_MasterRowExpanded
gridView.Columns.Item("ICON").MaxWidth = 24
gridView.Columns.Item("ICON").MinWidth = 24
gridView.Columns.Item("FULLPATH").Visible = False
@ -263,95 +258,48 @@ Public Class ClassWindreamDocGrid
For Each column As GridColumn In gridView.Columns
column.OptionsColumn.AllowEdit = False
Next
End Sub
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
If SearchType = "RECORD" Then
isEditable = row.Item("EDITABLE")
Else
isEditable = False
End If
Public Shared Sub detailView_CustomRowCellEdit(grvw As GridView, e As CustomRowCellEditEventArgs)
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")
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
If typeId = 1 And editable 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
col.AppearanceCell.BackColor = Color.LightCyan
End If
' Handler zuweisen
AddHandler textedit.Leave, _textValueChangedHandler
'ElseIf typeID = 1 And isVisible And isEditable = False Then
' Dim col As GridColumn = gridView.Columns(columnTitle)
' col.AppearanceCell.BackColor = Color.WhiteSmoke
e.RepositoryItem = textedit
End If
If typeID = 2 And isVisible Then
If typeId = 2 Then
Dim checkEdit As New RepositoryItemCheckEdit()
checkEdit.ValueChecked = True
checkEdit.ValueUnchecked = False
Dim col As GridColumn = gridView.Columns(columnTitle)
' TODO: Add Checkbox handler
AddHandler checkEdit.CheckedChanged, _checkValueChangedHandler
gridView.GridControl.RepositoryItems.Add(checkEdit)
If Not IsNothing(col) Then
col.ColumnEdit = checkEdit
If isEditable Then
col.OptionsColumn.AllowEdit = True
col.AppearanceCell.BackColor = Color.LightCyan
Else
col.OptionsColumn.AllowEdit = False
End If
End If
e.RepositoryItem = checkEdit
End If
If typeID = 3 And isVisible And isEditable Then
If typeId = 3 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.AppearanceCell.BackColor = Color.LightGray
col.DisplayFormat.FormatType = FormatType.DateTime
col.DisplayFormat.FormatString = CURRENT_DATE_FORMAT '& " HH:MM:ss"
End If
'dateedit.DisplayFormat = CURRENT_DATE_FORMAT & " HH:MM:ss"
AddHandler dateedit.EditValueChanged, _datepickerValueChangedHandler
e.RepositoryItem = dateedit
End If
If typeID = 4 And isVisible And isEditable Then
If typeId = 4 Then
Dim dropdown As New RepositoryItemComboBox()
Dim matchingRows() As DataRow = DT_DROPDOWN_ITEMS.Select(String.Format("CONFIG_ID = {0}", configId), "SEQUENCE")
' 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")
@ -360,24 +308,29 @@ Public Class ClassWindreamDocGrid
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
col.AppearanceCell.BackColor = Color.LightCyan
End If
' Handler zuweisen
AddHandler dropdown.SelectedValueChanged, _dropdownValueChangedHandler
'ElseIf typeID = 4 And isVisible And isEditable = False Then
' Dim col As GridColumn = gridView.Columns(columnTitle)
' col.AppearanceCell.BackColor = Color.WhiteSmoke
e.RepositoryItem = dropdown
End If
Next
End If
End Sub
Public Shared Sub gridView_MasterRowExpanded(sender As GridView, e As DevExpress.XtraGrid.Views.Grid.CustomMasterRowEventArgs)
Dim detailView As GridView = sender.GetDetailView(e.RowHandle, e.RelationIndex)
With detailView.Columns
.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
End With
AddHandler detailView.CustomRowCellEdit, AddressOf detailView_CustomRowCellEdit
End Sub
Public Class WindreamDocGridComboboxItem

View File

@ -3699,7 +3699,9 @@ Public Class frmConstructor_Main
DT_DOCRESULT_DROPDOWN_ITEMS,
AddressOf OnCBSelectedValueChanged,
AddressOf OnDateSelectedValueChanged,
AddressOf OnTextSelectedValueChanged, Type)
AddressOf OnTextSelectedValueChanged,
AddressOf OnCheckboxValueChanged,
Type)
If TCDetails.SelectedTabPageIndex <> 1 Then
TCDetails.SelectedTabPageIndex = 1
@ -3781,8 +3783,19 @@ Public Class frmConstructor_Main
Try
Dim DatePicker As DateEdit = sender
Dim value As DateTime = DatePicker.EditValue
Dim colTitle = DirectCast(GridControlDocSearch.MainView, DevExpress.XtraGrid.Views.Grid.GridView).FocusedColumn.FieldName
Dim configId As Integer = ClassWindreamDocGrid.RESULT_CONFIG_IDS.Item(colTitle)
If Date.Parse(DatePicker.OldEditValue) = DatePicker.EditValue Then
Exit Sub
End If
'Dim colTitle = DirectCast(GridControlDocSearch.MainView, DevExpress.XtraGrid.Views.Grid.GridView).FocusedColumn.FieldName
'Dim configId As Integer = ClassWindreamDocGrid.RESULT_CONFIG_IDS.Item(colTitle)
' Config id über mainView -> detailView herausfinden
Dim mainView As GridView = GridControlDocSearch.MainView
Dim detailView As GridView = mainView.GetDetailView(mainView.FocusedRowHandle, mainView.GetRelationIndex(mainView.FocusedRowHandle, "docIdDetails"))
Dim detailRow As DataRowView = detailView.GetRow(detailView.FocusedRowHandle)
Dim configid = detailRow.Item("CONFIG_ID")
Dim docId As Integer = ClassWindreamDocGrid.SELECTED_DOC_ID
Dim user As String = Environment.UserName
@ -3802,8 +3815,19 @@ Public Class frmConstructor_Main
If value.ToUpper = "Not displayable in Group-Search".ToUpper Then
Exit Sub
End If
Dim colTitle = DirectCast(GridControlDocSearch.MainView, DevExpress.XtraGrid.Views.Grid.GridView).FocusedColumn.FieldName
Dim configId As Integer = ClassWindreamDocGrid.RESULT_CONFIG_IDS.Item(colTitle)
If TextBox.OldEditValue = TextBox.EditValue Then
Exit Sub
End If
'Dim colTitle = DirectCast(GridControlDocSearch.MainView, DevExpress.XtraGrid.Views.Grid.GridView).FocusedColumn.FieldName
'Dim configId As Integer = ClassWindreamDocGrid.RESULT_CONFIG_IDS.Item(colTitle)
' Config id über mainView -> detailView herausfinden
Dim mainView As GridView = GridControlDocSearch.MainView
Dim detailView As GridView = mainView.GetDetailView(mainView.FocusedRowHandle, mainView.GetRelationIndex(mainView.FocusedRowHandle, "docIdDetails"))
Dim detailRow As DataRowView = detailView.GetRow(detailView.FocusedRowHandle)
Dim configid = detailRow.Item("CONFIG_ID")
Dim docId As Integer = ClassWindreamDocGrid.SELECTED_DOC_ID
Dim user As String = Environment.UserName
@ -3814,6 +3838,28 @@ Public Class frmConstructor_Main
End Try
End Sub
Private Sub OnCheckboxValueChanged(sender As Object, e As EventArgs)
'TODO Save Checkboxvalue
Try
Dim CheckBox As CheckEdit = sender
Dim value As Boolean = CheckBox.EditValue
' Config id über mainView -> detailView herausfinden
Dim mainView As GridView = GridControlDocSearch.MainView
Dim detailView As GridView = mainView.GetDetailView(mainView.FocusedRowHandle, mainView.GetRelationIndex(mainView.FocusedRowHandle, "docIdDetails"))
Dim detailRow As DataRowView = detailView.GetRow(detailView.FocusedRowHandle)
Dim configid = detailRow.Item("CONFIG_ID")
Dim docId As Integer = ClassWindreamDocGrid.SELECTED_DOC_ID
Dim user As String = Environment.UserName
Dim Sql As String = String.Format("EXEC PRPMO_DOC_VALUE {0}, {1}, '{2}', '{3}'", docId, configid, value, user)
ClassDatabase.Execute_non_Query(Sql)
Catch ex As Exception
MsgBox("Error in OnCheckboxValueChanged:" & vbNewLine & ex.Message)
End Try
End Sub
Public Class WDDoc_Combobox_Item
Implements IConvertible

View File

@ -126,6 +126,10 @@ Public Class frmRecordView
End Try
End Sub
Private Sub OnCheckboxValueChanged(sender As Object, e As EventArgs)
'TODO Save Checkboxvalue
End Sub
Private Sub RUN_WDSEARCH_GRID()
Me.Cursor = Cursors.WaitCursor
Try
@ -155,7 +159,9 @@ Public Class frmRecordView
DT_DOCRESULT_DROPDOWN_ITEMS,
AddressOf OnCBSelectedValueChanged,
AddressOf OnDateSelectedValueChanged,
AddressOf OnTextSelectedValueChanged, "RECORD")
AddressOf OnTextSelectedValueChanged,
AddressOf OnCheckboxValueChanged,
"RECORD")
End If
Else
Dim msg = "Keine Windream-Dokumente für Record: " & JUMP_RECORD_ID & " gefunden"