DateColumn, Xlsx Export, Column Headers, Default Values

This commit is contained in:
Jonathan Jenne
2022-07-13 16:31:56 +02:00
parent 35bb433f78
commit 4f0e62277f
13 changed files with 433 additions and 322 deletions

View File

@@ -1,27 +1,26 @@
Imports DevExpress.XtraGrid
Imports System.ComponentModel
Imports DevExpress.Utils
Imports DevExpress.XtraEditors
Imports DevExpress.XtraEditors.Controls
Imports DevExpress.XtraEditors.Repository
Imports DevExpress.XtraGrid
Imports DevExpress.XtraGrid.Columns
Imports DevExpress.XtraGrid.Views.Grid
Imports DevExpress.XtraRichEdit
Imports DevExpress.XtraTab
Imports DevExpress.XtraTreeList
Imports DevExpress.XtraTreeList.Columns
Imports DevExpress.XtraTreeList.Nodes
Imports DigitalData.Controls.DocumentViewer
Imports DigitalData.Controls.SQLConfig
Imports DigitalData.GUIs.Common
Imports DigitalData.GUIs.Monitor.Constants
Imports DigitalData.Modules.Config
Imports DigitalData.Modules.Database
Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.Language.Utils
Imports DigitalData.Modules.Language
Imports DigitalData.Modules.Language.Utils
Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.Patterns
Imports DevExpress.XtraTab
Imports DigitalData.Controls.DocumentViewer
Imports DevExpress.XtraEditors
Imports DevExpress.XtraRichEdit
Imports DevExpress.XtraTreeList.Columns
Imports DevExpress.XtraEditors.Repository
Imports DevExpress.Utils
Imports DevExpress.XtraEditors.Controls
Imports DigitalData.GUIs.Monitor.SearchLoader
Imports DevExpress.XtraLayout
Imports DevExpress.XtraTreeList
Imports DevExpress.XtraGrid.Columns
Imports System.ComponentModel
Public Class frmMonitor
Private ReadOnly ColumnMarkers As New List(Of String) From {"[HTML]", "[SQL]", "[FILENAME]"}
@@ -35,9 +34,6 @@ Public Class frmMonitor
Private ReadOnly DisplayColumns As New List(Of String) From {"COLUMN1", "COLUMN2", "COLUMN3", "ADDED_WHEN", "STATE", "ICON"}
Private SQLResultGrids As List(Of GridControl)
Private SQLResultTabs As List(Of XtraTabPage)
Private SQLResultGridIndex As Integer = 0
@@ -59,7 +55,7 @@ Public Class frmMonitor
Private Const STATE_WARNING As String = "WARNING"
Private Const STATE_WAITING As String = "WAITING"
Private Const STATE_HIGHLIGHT As String = "HIGHLIGHT"
Private Const LIST_CONTROL_NULL_TEXT As String = "Kein Wert ausgewählt"
Private MarkedColumns As New List(Of GridColumn)
Private ActiveSearch As Search = Nothing
Private LastSearch As Search = Nothing
@@ -86,6 +82,7 @@ Public Class frmMonitor
Private GridBuilder As GridBuilder
Private ControlHelper As Common.ControlHelper
Private SearchLoader As SearchLoader
Private ParamLoader As ParameterLoader
Private LogConfig As LogConfig
Private Logger As Logger
Private ConfigManager As ConfigManager(Of Config)
@@ -129,6 +126,7 @@ Public Class frmMonitor
Dim oConnectionString = MSSQLServer.DecryptConnectionString(ConfigManager.Config.ConnectionString)
Database = New MSSQLServer(LogConfig, oConnectionString)
SearchLoader = New SearchLoader(LogConfig, ConfigManager.Config, Database)
ParamLoader = New ParameterLoader(LogConfig, Database, LayoutControl1)
GridBuilder = New GridBuilder()
InitGrid()
@@ -157,12 +155,12 @@ Public Class frmMonitor
For Each oGrid In SQLResultGrids
AddHandler oGrid.Enter, Sub()
ActiveSQLResultGrid = oGrid
btnExportGrid.Enabled = True
btnExportDetails.Enabled = True
End Sub
AddHandler oGrid.Leave, Sub()
ActiveSQLResultGrid = Nothing
btnExportGrid.Enabled = False
btnExportDetails.Enabled = False
End Sub
Next
@@ -217,12 +215,10 @@ Public Class frmMonitor
AdornerUIManager2.Hide()
AdornerUIManager2.Elements.Clear()
'Dim oSQL As String = $"EXEC [{ConfigManager.Config.DBPrefix}].[dbo].[PRDD_MONITORING_GET_TREEVIEW_RESULT] '{cmbSearches.EditValue}','irgendwas','irgendwas','irgendwas',1"
Dim oSQL As String = oSearch.SQLCommand
Dim oControls As New List(Of Control)
For Each oItem As Control In LayoutControl1.Controls
Dim oParam = oSearch.Parameters.
Where(Function(param) param.PatternTitle = oItem.Name).
FirstOrDefault()
@@ -241,7 +237,6 @@ Public Class frmMonitor
oMissingParams = True
End If
Next
AdornerUIManager2.Show()
@@ -254,7 +249,7 @@ Public Class frmMonitor
oSQL = Patterns.ReplaceControlValues(oSQL, oControls)
Dim oTable As DataTable = Database.GetDatatable(oSQL)
If oSearch.ReturnType = ReturnTypeEnum.TreeView Then
If oSearch.ReturnType = Constants.ReturnTypeEnum.TreeView Then
GridControlResults.Visible = False
GridControlResults.Dock = DockStyle.None
@@ -302,6 +297,7 @@ Public Class frmMonitor
GridControlResults.DataSource = oTable
GridViewResults.PopulateColumns()
GridBuilder.SetDateTimeColumns(GridViewResults)
MarkedColumns = GridViewResults.Columns.AsEnumerable.
Where(Function(column)
@@ -321,6 +317,8 @@ Public Class frmMonitor
Workspace.LoadWorkspace(oSearch.Id.ToString)
LastLoadedSearch = oSearch
btnExportMain.Enabled = True
Return True
Catch ex As Exception
FormHelper.ShowErrorMessage(ex, "LoadData")
@@ -352,6 +350,9 @@ Public Class frmMonitor
Private Sub InitTreeListColumns(pMaxLength As Integer)
Dim oColumn1 = TreeListResults.Columns.Item("COLUMN1")
Dim oColumn2 = TreeListResults.Columns.Item("COLUMN2")
Dim oColumn3 = TreeListResults.Columns.Item("COLUMN3")
Dim oAddedWhenColumn = TreeListResults.Columns.Item("ADDED_WHEN")
Dim oStateColumn = TreeListResults.Columns.Item("STATE")
Dim oIconColumn = TreeListResults.Columns.Item("ICON")
@@ -364,10 +365,24 @@ Public Class frmMonitor
Dim oColumnLength = pMaxLength * 5
With oColumn1
.Caption = "Titel"
.MinWidth = oColumnLength
.MaxWidth = oColumnLength
.Width = oColumnLength
.OptionsColumn.AllowSize = False
.OptionsColumn.AllowSort = False
End With
With oColumn2
.Caption = "Wert 1"
End With
With oColumn3
.Caption = "Wert 2"
End With
With oAddedWhenColumn
.Caption = "Datum"
End With
With oStateColumn
@@ -377,6 +392,7 @@ Public Class frmMonitor
.Width = 25
.Caption = " "
.OptionsColumn.AllowSize = False
.OptionsColumn.AllowSort = False
.ImageOptions.Image = SvgImageCollection1.GetImage(NodeImage.Success)
End With
@@ -387,6 +403,7 @@ Public Class frmMonitor
.Width = 25
.Caption = " "
.OptionsColumn.AllowSize = False
.OptionsColumn.AllowSort = False
.ImageOptions.Image = SvgImageCollection1.GetImage(NodeImage.SQL)
End With
End Sub
@@ -415,6 +432,9 @@ Public Class frmMonitor
SplitContainerSQL.Collapsed = True
SplitContainerFileHTML.Collapsed = True
btnExportMain.Enabled = False
btnExportDetails.Enabled = False
lbResultCount.Caption = String.Format(lbResultCount.Tag, 0)
LoadSearch()
@@ -439,12 +459,9 @@ Public Class frmMonitor
AdornerUIManager2.Hide()
AdornerUIManager2.Elements.Clear()
Root.Clear(disposeItemAndControls:=True)
Root.Clear(disposeItemAndControls:=False)
LayoutControl1.Clear(True, True)
'LayoutControl1.Items.Clear()
' LayoutControl1.Controls.Clear()
TreeListResults.DataSource = Nothing
GridControlResults.DataSource = Nothing
@@ -456,107 +473,19 @@ Public Class frmMonitor
End If
For Each oParam As SearchParameter In oSearch.Parameters
Dim oControl As Control
ParamLoader.LoadParameters(oSearch)
Select Case oParam.DataType
Case DataTypeEnum.Boolean
Dim oCheckbox = New CheckEdit With {
.Text = oParam.Title
}
oControl = oCheckbox
Case DataTypeEnum.Date
oControl = New DateEdit()
Case DataTypeEnum.String
Select Case oParam.ItemType
Case ItemTypeEnum.List
Dim oCombobox = New ComboBoxEdit() With {
.Name = oParam.PatternTitle,
.Tag = oParam.PatternTitle
}
Dim oClearButton = GetClearButtonForControl(oCombobox)
Dim oItems = oParam.ItemString.Split(";"c).ToList()
oCombobox.Properties.Items.AddRange(oItems)
oCombobox.Properties.NullText = LIST_CONTROL_NULL_TEXT
oCombobox.Properties.Buttons.Add(oClearButton)
oControl = oCombobox
Case ItemTypeEnum.SQL
Dim oGridCombobox = New LookUpEdit() With {
.Name = oParam.PatternTitle,
.Tag = oParam.PatternTitle
}
Dim oClearButton = GetClearButtonForControl(oGridCombobox)
Dim oSQL = oParam.ItemString
Dim oTable = Database.GetDatatable(oSQL)
oGridCombobox.Properties.DataSource = oTable
oGridCombobox.Properties.DisplayMember = oTable.Columns.Item(0).ColumnName
oGridCombobox.Properties.ValueMember = oTable.Columns.Item(0).ColumnName
oGridCombobox.Properties.NullText = LIST_CONTROL_NULL_TEXT
oGridCombobox.Properties.Buttons.Add(oClearButton)
oControl = oGridCombobox
Case Else
oControl = New TextEdit()
End Select
Case Else
oControl = New TextEdit()
End Select
oControl.Name = oParam.PatternTitle
oControl.Tag = oParam.PatternTitle
Dim oItem As LayoutControlItem = LayoutControl1.AddItem()
oItem.Text = oParam.Title
oItem.Control = oControl
oItem.TextLocation = Locations.Top
oItem.TextToControlDistance = 3
oItem.Padding = New DevExpress.XtraLayout.Utils.Padding(0, 0, 10, 0)
Next
Catch ex As Exception
Logger.Error(ex)
End Try
End Sub
Private Function GetClearButtonForControl(pControl As Control) As EditorButton
Dim oClearButton As New EditorButton() With {
.Kind = ButtonPredefines.Clear,
.Tag = pControl.Name
}
AddHandler oClearButton.Click, AddressOf ClearButton_Click
Return oClearButton
End Function
Private Sub ClearButton_Click(sender As Object, e As EventArgs)
Dim oButton As EditorButton = sender
Dim oControlName As String = oButton.Tag.ToString
Dim oControl = LayoutControl1.Controls.Find(oControlName, True).SingleOrDefault()
Select Case oControl.GetType
Case GetType(LookUpEdit)
DirectCast(oControl, LookUpEdit).EditValue = Nothing
Case GetType(ComboBoxEdit)
DirectCast(oControl, ComboBoxEdit).EditValue = Nothing
End Select
End Sub
Private Function GetParameterItems(pParam As SearchParameter) As Object
Select Case pParam.ItemType
Case ItemTypeEnum.List
Case Constants.ItemTypeEnum.List
Return pParam.ItemString.Split(";"c).ToList()
Case ItemTypeEnum.SQL
Case Constants.ItemTypeEnum.SQL
Dim oSQL = pParam.ItemString
Dim oTable = Database.GetDatatable(oSQL)
Return oTable
@@ -596,6 +525,8 @@ Public Class frmMonitor
SplitContainerSQL.Collapsed = True
SplitContainerFileHTML.Collapsed = True
For Each oSQLCommand As KeyValuePair(Of String, String) In oSQLCommands
Try
Dim oExtracted = ExtractTitle(oSQLCommand.Value)
@@ -611,6 +542,10 @@ Public Class frmMonitor
Dim oGridIndex = Integer.Parse(oSQLCommand.Key.Last()) - 1
Dim oGridControl As GridControl = SQLResultGrids.Item(oGridIndex)
If oGridIndex = 0 Then
ActiveSQLResultGrid = oGridControl
End If
FillResultGrid(oGridControl, oTable, oTitle)
Catch ex As Exception
Logger.Error(ex)
@@ -618,6 +553,8 @@ Public Class frmMonitor
End Try
Next
For Each oFile As KeyValuePair(Of String, String) In oFilePaths
Try
Dim oExtracted = ExtractTitle(oFile.Value)
@@ -779,44 +716,6 @@ Public Class frmMonitor
e.Handled = False
End Sub
Private Sub TreeListResults_GetStateImage(sender As Object, e As DevExpress.XtraTreeList.GetStateImageEventArgs)
'Dim oValues As Dictionary(Of String, String) = GetValuesFromNode(e.Node, DataColumns)
'Dim oSQLCommands = oValues.
' Where(Function(v) v.Key.StartsWith("SELECT")).
' Where(Function(v) v.Value IsNot Nothing).
' Count()
'Dim oFilePaths = oValues.
' Where(Function(v) v.Key.StartsWith("DOCVIEW")).
' Where(Function(v) v.Value IsNot Nothing).
' Count()
'Dim oHtmlDocuments = oValues.
' Where(Function(v) v.Key.StartsWith("HTML")).
' Where(Function(v) v.Value IsNot Nothing).
' Count()
'Dim oIconColumn = TreeListResults.Columns.Item("ICON")
'Dim oIcon = NotNull(e.Node.GetValue(oIconColumn), Nothing)
'Dim oStateColumn = TreeListResults.Columns.Item("STATE")
'Dim oState = NotNull(e.Node.GetValue(oStateColumn), Nothing)
'If oSQLCommands > 0 Then
' e.NodeImageIndex = NodeImage.SQL
'ElseIf oFilePaths > 0 Then
' e.NodeImageIndex = NodeImage.File
'ElseIf oHtmlDocuments > 0 Then
' e.NodeImageIndex = NodeImage.Mail
'Else
' If oState IsNot Nothing AndAlso StateIcons.ContainsKey(oState) Then
' Dim oIconIndex = StateIcons.Item(oState)
' e.NodeImageIndex = oIconIndex
' Else
' e.NodeImageIndex = NodeImage.Default
' End If
'End If
End Sub
Private Sub BarButtonItem1_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem1.ItemClick
Dim oSQLConfig As New frmSQLConfig(LogConfig) With {
.ConnectionString = ConfigManager.Config.ConnectionString
@@ -832,21 +731,34 @@ Public Class frmMonitor
End If
End Sub
Private Sub BarButtonItem2_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnExportGrid.ItemClick
If ActiveSQLResultGrid IsNot Nothing Then
XtraSaveFileDialog1.Filter = "Excel Files (*.xlsx)|*.xlsx"
Private Sub BarButtonItem2_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnExportDetails.ItemClick
If ActiveSQLResultGrid Is Nothing Then
Exit Sub
End If
If XtraSaveFileDialog1.ShowDialog() = DialogResult.OK Then
ActiveSQLResultGrid.ExportToXlsx(XtraSaveFileDialog1.FileName)
End If
XtraSaveFileDialog1.Filter = "Excel Files (*.xlsx)|*.xlsx"
XtraSaveFileDialog1.FileName = $"{ActiveSearch.Title}_Detail.xlsx"
If XtraSaveFileDialog1.ShowDialog() = DialogResult.OK Then
ActiveSQLResultGrid.ExportToXlsx(XtraSaveFileDialog1.FileName)
End If
End Sub
Private Sub BarButtonItem3_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem3.ItemClick
Private Sub BarButtonItem3_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnExportMain.ItemClick
If ActiveSearch Is Nothing Then
Exit Sub
End If
XtraSaveFileDialog1.Filter = "Excel Files (*.xlsx)|*.xlsx"
XtraSaveFileDialog1.FileName = $"{ActiveSearch.Title}.xlsx"
If XtraSaveFileDialog1.ShowDialog() = DialogResult.OK Then
TreeListResults.ExportToXlsx(XtraSaveFileDialog1.FileName)
If ActiveSearch.ReturnType = ReturnTypeEnum.TreeView Then
TreeListResults.ExportToXlsx(XtraSaveFileDialog1.FileName)
Else
GridControlResults.ExportToXlsx(XtraSaveFileDialog1.FileName)
End If
End If
End Sub
@@ -914,6 +826,7 @@ Public Class frmMonitor
End If
HideAllTabs()
ActiveSQLResultGrid = Nothing
Try
Dim oRow As DataRow = GridViewResults.GetDataRow(GridViewResults.FocusedRowHandle)
@@ -942,9 +855,15 @@ Public Class frmMonitor
Continue For
End If
Dim oGridControl As GridControl = SQLResultGrids.Item(oGridResultIndex)
Dim oTitle = oColumn.FieldName.Replace("[SQL]", "").Trim()
Dim oGridControl As GridControl = SQLResultGrids.Item(oGridResultIndex)
If oGridResultIndex = 0 Then
ActiveSQLResultGrid = oGridControl
End If
oGridResultIndex += 1
FillResultGrid(oGridControl, oTable, oTitle)
SplitContainerSQL.Collapsed = False
@@ -971,8 +890,14 @@ Public Class frmMonitor
Next
Catch ex As Exception
If ActiveSQLResultGrid Is Nothing Then
btnExportDetails.Enabled = False
Else
btnExportDetails.Enabled = True
End If
Catch ex As Exception
Logger.Error(ex)
End Try
End Sub