move a lot of grid stuff into GridControl class
This commit is contained in:
parent
49239a3e6e
commit
629dfdc304
@ -572,145 +572,7 @@ Public Class ClassControlCreator
|
||||
End If
|
||||
|
||||
oGridControlCreator.ConfigureViewColumns(DT_MY_COLUMNS, oView)
|
||||
|
||||
' Dim oShouldDisplayFooter As Boolean = False
|
||||
'
|
||||
'For Each oCol As GridColumn In oView.Columns
|
||||
' Dim oColumnData As DataRow = DT_MY_COLUMNS.
|
||||
' Select($"SPALTENNAME = '{oCol.FieldName}'").
|
||||
' FirstOrDefault()
|
||||
|
||||
' If oColumnData Is Nothing Then
|
||||
' Continue For
|
||||
' End If
|
||||
|
||||
' Dim oSequence As Integer = oColumnData.Item("SEQUENCE")
|
||||
' oCol.VisibleIndex = oSequence
|
||||
|
||||
' Dim oColumnType As String = oColumnData.Item("TYPE_COLUMN")
|
||||
|
||||
' Select Case oColumnType
|
||||
' Case "INTEGER"
|
||||
' oCol.DisplayFormat.FormatType = FormatType.Custom
|
||||
' oCol.DisplayFormat.FormatString = "N0"
|
||||
|
||||
' Case "DOUBLE"
|
||||
' oCol.DisplayFormat.FormatType = FormatType.Custom
|
||||
' oCol.DisplayFormat.FormatString = "N2"
|
||||
|
||||
' Case "CURRENCY"
|
||||
' oCol.DisplayFormat.FormatType = FormatType.Custom
|
||||
' oCol.DisplayFormat.FormatString = "C2"
|
||||
' End Select
|
||||
|
||||
' Dim oSummaryFunction As String = oColumnData.Item("SUMMARY_FUNCTION")
|
||||
|
||||
' Select Case oSummaryFunction
|
||||
' Case AGGREGATE_TOTAL_INTEGER
|
||||
' oCol.SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Sum
|
||||
' oCol.SummaryItem.DisplayFormat = "SUM: {0:N0}"
|
||||
' oShouldDisplayFooter = True
|
||||
|
||||
' Case AGGREGATE_TOTAL_FLOAT
|
||||
' oCol.SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Sum
|
||||
' oCol.SummaryItem.DisplayFormat = "SUM: {0:N2}"
|
||||
' oShouldDisplayFooter = True
|
||||
|
||||
' Case AGGREGATE_TOTAL_CURRENCY
|
||||
' oCol.SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Sum
|
||||
' oCol.SummaryItem.DisplayFormat = "SUM: {0:C2}"
|
||||
' oShouldDisplayFooter = True
|
||||
|
||||
' Case AGGREGATE_TOTAL_AVG
|
||||
' oCol.SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Average
|
||||
' oCol.SummaryItem.DisplayFormat = "AVG: {0}"
|
||||
' oShouldDisplayFooter = True
|
||||
|
||||
' Case AGGREGATE_TOTAL_MAX
|
||||
' oCol.SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Max
|
||||
' oCol.SummaryItem.DisplayFormat = "MAX: {0}"
|
||||
' oShouldDisplayFooter = True
|
||||
|
||||
' Case AGGREGATE_TOTAL_MIN
|
||||
' oCol.SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Min
|
||||
' oCol.SummaryItem.DisplayFormat = "MIN: {0}"
|
||||
' oShouldDisplayFooter = True
|
||||
|
||||
' Case AGGREGATE_TOTAL_COUNT
|
||||
' oCol.SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Count
|
||||
' oCol.SummaryItem.DisplayFormat = "NUM: {0}"
|
||||
' oShouldDisplayFooter = True
|
||||
|
||||
' End Select
|
||||
'Next
|
||||
'
|
||||
' oView.OptionsView.ShowFooter = oShouldDisplayFooter
|
||||
|
||||
AddHandler oView.InitNewRow, Sub(sender As Object, e As InitNewRowEventArgs)
|
||||
Try
|
||||
Logger.Debug("Initialzing new row")
|
||||
|
||||
For Each oColumnData As DataRow In DT_MY_COLUMNS.Rows
|
||||
For Each oGridColumn As GridColumn In oView.Columns
|
||||
If oGridColumn.FieldName <> oColumnData.Item("SPALTENNAME") Then
|
||||
Continue For
|
||||
End If
|
||||
|
||||
Dim oDefaultValue = NotNull(oColumnData.Item("DEFAULT_VALUE"), String.Empty)
|
||||
|
||||
If oDefaultValue <> String.Empty Then
|
||||
Logger.Debug("Setting default value [{0}] for column [{1}]", oDefaultValue, oGridColumn.FieldName)
|
||||
oView.SetRowCellValue(e.RowHandle, oGridColumn.FieldName, oDefaultValue)
|
||||
End If
|
||||
Next
|
||||
Next
|
||||
|
||||
Catch ex As Exception
|
||||
Logger.Error(ex)
|
||||
Finally
|
||||
newRowModified = False
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
AddHandler oView.CustomRowCellEdit, Sub(sender As Object, e As CustomRowCellEditEventArgs)
|
||||
Try
|
||||
For Each oRow As DataRow In DT_MY_COLUMNS.Rows
|
||||
Dim oColumnName = oRow.Item("SPALTENNAME")
|
||||
Dim oEditorExists = GridTables_TestEditorExistsByControlAndColumn(oControlId, oColumnName)
|
||||
If oColumnName <> e.Column.FieldName Then
|
||||
Continue For
|
||||
End If
|
||||
|
||||
If oEditorExists Then
|
||||
Dim oEditor = GridTables.Item(oControlId).Item(oColumnName)
|
||||
Logger.Debug("Assigning Editor to Column [{0}]", oColumnName)
|
||||
e.RepositoryItem = oEditor
|
||||
Else
|
||||
Logger.Debug("Editor for Column [{0}] does not exist", oColumnName)
|
||||
End If
|
||||
Next
|
||||
Catch ex As Exception
|
||||
Logger.Warn("Error in CustomRowCellEdit for [{0}]", e.CellValue)
|
||||
Logger.Error(ex)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
AddHandler oView.ValidatingEditor, Sub(sender As Object, e As BaseContainerValidateEditorEventArgs)
|
||||
Dim oRow As DataRowView = oView.GetRow(oView.FocusedRowHandle)
|
||||
Dim oColumnName = oView.FocusedColumn.FieldName
|
||||
Logger.Debug("Validating Editor for Column [{0}]", oColumnName)
|
||||
GridTables_ValidateColumn(oView, DT_MY_COLUMNS, oColumnName, e.Value, e.Valid, e.ErrorText)
|
||||
End Sub
|
||||
|
||||
AddHandler oView.InvalidRowException, AddressOf View_InvalidRowException
|
||||
AddHandler oView.ValidatingEditor, AddressOf View_ValidatingEditor
|
||||
|
||||
' These handlers are all used for the custom DefaultValue functionality, additionally some code in the 'InitNewRow' event.
|
||||
' https://supportcenter.devexpress.com/ticket/details/t1035580/how-to-default-a-value-in-a-column-when-add-new-row-in-data-grid
|
||||
AddHandler oView.ShowingEditor, AddressOf View_ShowingEditor
|
||||
AddHandler oView.ShownEditor, AddressOf View_ShownEditor
|
||||
AddHandler oView.ValidateRow, AddressOf View_ValidateRow
|
||||
AddHandler oControl.LostFocus, AddressOf Control_LostFocus
|
||||
oGridControlCreator.ConfigureViewEvents(DT_MY_COLUMNS, oView, oControl, oControlId)
|
||||
|
||||
' 08.11.2021: Fix editor being empty on first open
|
||||
oView.FocusInvalidRow()
|
||||
@ -720,61 +582,7 @@ Public Class ClassControlCreator
|
||||
|
||||
Private newRowModified As Boolean = False
|
||||
|
||||
Private Sub Control_LostFocus(sender As GridControl, e As EventArgs)
|
||||
Dim oView2 As GridView = sender.FocusedView
|
||||
|
||||
' 19.08.2022:
|
||||
' Calling UpdateCurrentRow when newRowModified Is true
|
||||
' leads to some weird jumping of focus in the current cell.
|
||||
' This seems to fix it.
|
||||
If newRowModified = False Then
|
||||
oView2.UpdateCurrentRow()
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub View_ShowingEditor(sender As Object, e As CancelEventArgs)
|
||||
Dim view As GridView = TryCast(sender, GridView)
|
||||
Logger.Debug("Showing editor.")
|
||||
If view.IsNewItemRow(view.FocusedRowHandle) AndAlso Not newRowModified Then
|
||||
Logger.Debug("Adding new row.")
|
||||
view.AddNewRow()
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub View_ShownEditor(sender As Object, e As EventArgs)
|
||||
Dim view As GridView = TryCast(sender, GridView)
|
||||
If view.IsNewItemRow(view.FocusedRowHandle) Then
|
||||
Logger.Debug("Attaching Modified Handler.")
|
||||
AddHandler view.ActiveEditor.Modified, Sub()
|
||||
Logger.Debug("Row was modified.")
|
||||
newRowModified = True
|
||||
End Sub
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub View_ValidateRow(sender As Object, e As ValidateRowEventArgs)
|
||||
Dim view As GridView = TryCast(sender, GridView)
|
||||
If view.IsNewItemRow(e.RowHandle) AndAlso Not newRowModified Then
|
||||
Logger.Debug("Deleting unused row")
|
||||
view.DeleteRow(e.RowHandle)
|
||||
End If
|
||||
|
||||
Logger.Debug("Validating row. Resetting Modified.")
|
||||
newRowModified = False
|
||||
End Sub
|
||||
|
||||
Private Sub View_ValidatingEditor(sender As Object, e As BaseContainerValidateEditorEventArgs)
|
||||
Dim oValue As String = NotNull(e.Value, "")
|
||||
|
||||
If oValue.Contains(" | ") Then
|
||||
oValue = oValue.Split(" | ").ToList().First()
|
||||
e.Value = oValue
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub View_InvalidRowException(sender As Object, e As InvalidRowExceptionEventArgs)
|
||||
e.ExceptionMode = ExceptionMode.NoAction
|
||||
End Sub
|
||||
|
||||
Public Function CreateExistingLine(row As DataRow, designMode As Boolean) As LineLabel
|
||||
Dim control As LineLabel = CreateBaseControl(New LineLabel(), row, designMode)
|
||||
@ -1018,56 +826,8 @@ Public Class ClassControlCreator
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Function GridTables_TestEditorExistsByControlAndColumn(oControlId As Integer, pColumn As String) As Boolean
|
||||
If GridTables.ContainsKey(oControlId) Then
|
||||
Dim oContainsKey = GridTables.Item(oControlId).ContainsKey(pColumn)
|
||||
If oContainsKey AndAlso GridTables.Item(oControlId).Item(pColumn) IsNot Nothing Then
|
||||
Return True
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
End Function
|
||||
|
||||
Private Function GridTables_ValidateColumn(pView As GridView, pColumnDefinition As DataTable, ColumnName As String, pValue As Object, ByRef pIsValid As Boolean, ByRef pErrorText As String) As Boolean
|
||||
Dim oColumn As DataRow = (From r As DataRow In pColumnDefinition.Rows
|
||||
Where r.Item("SPALTENNAME") = ColumnName
|
||||
Select r).FirstOrDefault()
|
||||
|
||||
Dim oGridColumn As GridColumn = (From c As GridColumn In pView.Columns
|
||||
Where c.FieldName = ColumnName
|
||||
Select c).FirstOrDefault()
|
||||
|
||||
Dim oIsRequired = oColumn.Item("VALIDATION")
|
||||
|
||||
Try
|
||||
Dim oRegex = NotNull(oColumn.Item("REGEX_MATCH"), String.Empty)
|
||||
Dim oRegexMessage = NotNull(oColumn.Item("REGEX_MESSAGE_DE"), String.Empty)
|
||||
If oRegex <> String.Empty Then
|
||||
Dim oMatch = New Regex(oRegex).IsMatch(pValue.ToString)
|
||||
Dim oDefaultMessage = "Wert entspricht nicht dem gefordertem Format!"
|
||||
Dim oMessage = IIf(oRegexMessage <> String.Empty, oRegexMessage, oDefaultMessage)
|
||||
|
||||
If oMatch = False Then
|
||||
pErrorText = oMessage
|
||||
pIsValid = False
|
||||
Return False
|
||||
End If
|
||||
End If
|
||||
Catch ex As Exception
|
||||
Logger.Error(ex)
|
||||
End Try
|
||||
|
||||
If oIsRequired And (pValue IsNot Nothing AndAlso pValue.ToString = "") Then
|
||||
pErrorText = "Spalte muss ausgefüllt werden!"
|
||||
pIsValid = False
|
||||
Return False
|
||||
|
||||
End If
|
||||
|
||||
Return True
|
||||
End Function
|
||||
|
||||
End Class
|
||||
|
||||
@ -9,14 +9,21 @@ Imports DigitalData.Modules.EDMI.API.DatabaseWithFallback
|
||||
Imports DigitalData.Modules.Logging
|
||||
Imports DigitalData.Modules.Base
|
||||
Imports System.ComponentModel
|
||||
Imports DevExpress.XtraEditors.Controls
|
||||
Imports DevExpress.XtraGrid.Views.Base
|
||||
Imports System.Text.RegularExpressions
|
||||
|
||||
Namespace ControlCreator
|
||||
Public Class GridControl
|
||||
Private ReadOnly _LogConfig As LogConfig
|
||||
Private ReadOnly _Logger As Logger
|
||||
Private ReadOnly _GridTables As Dictionary(Of Integer, Dictionary(Of String, RepositoryItem))
|
||||
|
||||
Private newRowModified As Boolean
|
||||
|
||||
Public Sub New(pLogConfig As LogConfig, pGridTables As Dictionary(Of Integer, Dictionary(Of String, RepositoryItem)))
|
||||
_LogConfig = pLogConfig
|
||||
_Logger = pLogConfig.GetLogger()
|
||||
_GridTables = pGridTables
|
||||
End Sub
|
||||
|
||||
@ -62,15 +69,15 @@ Namespace ControlCreator
|
||||
Try
|
||||
Dim oComboboxDataTable As DataTable = Nothing
|
||||
Dim oColumnName As String = oRow.Item("SPALTENNAME")
|
||||
LOGGER.Debug("Working on SQL for Column[{0}]...", oColumnName)
|
||||
_LOGGER.Debug("Working on SQL for Column[{0}]...", oColumnName)
|
||||
If Not clsPatterns.HasComplexPatterns(oSqlCommand) Then
|
||||
LOGGER.Debug("SQL has no complex patterns!")
|
||||
_LOGGER.Debug("SQL has no complex patterns!")
|
||||
'oComboboxDataTable = ClassDatabase.Return_Datatable_ConId(oSqlCommand, oConnectionId)
|
||||
oComboboxDataTable = DatabaseFallback.GetDatatable(New GetDatatableOptions(oSqlCommand, DatabaseType.ECM) With {
|
||||
.ConnectionId = oConnectionId
|
||||
})
|
||||
Else
|
||||
LOGGER.Debug("...has complex patterns!!")
|
||||
_LOGGER.Debug("...has complex patterns!!")
|
||||
End If
|
||||
|
||||
Dim oRepositoryItem = GridTables_GetRepositoryItemForColumn(oColumnName, oComboboxDataTable, oRow.Item("ADVANCED_LOOKUP"))
|
||||
@ -81,8 +88,8 @@ Namespace ControlCreator
|
||||
_GridTables.Item(pControlId).Add(oColumnName, oRepositoryItem)
|
||||
End If
|
||||
Catch ex As Exception
|
||||
LOGGER.Warn("Could not load data for column {0} in control {1}", oRow.Item("SPALTENNAME"), pControlName)
|
||||
LOGGER.Error(ex)
|
||||
_LOGGER.Warn("Could not load data for column {0} in control {1}", oRow.Item("SPALTENNAME"), pControlName)
|
||||
_LOGGER.Error(ex)
|
||||
End Try
|
||||
End If
|
||||
Next
|
||||
@ -209,7 +216,181 @@ Namespace ControlCreator
|
||||
|
||||
pGridView.OptionsView.ShowFooter = oShouldDisplayFooter
|
||||
End Sub
|
||||
|
||||
Public Sub ConfigureViewEvents(pColumnTable As DataTable, pGridView As GridView, pControl As Windows.Forms.Control, pControlId As Integer)
|
||||
AddHandler pGridView.InitNewRow, Sub(sender As Object, e As InitNewRowEventArgs)
|
||||
Try
|
||||
_LOGGER.Debug("Initialzing new row")
|
||||
|
||||
For Each oColumnData As DataRow In pColumnTable.Rows
|
||||
For Each oGridColumn As GridColumn In pGridView.Columns
|
||||
If oGridColumn.FieldName <> oColumnData.Item("SPALTENNAME") Then
|
||||
Continue For
|
||||
End If
|
||||
|
||||
Dim oDefaultValue = ObjectEx.NotNull(oColumnData.Item("DEFAULT_VALUE"), String.Empty)
|
||||
|
||||
If oDefaultValue <> String.Empty Then
|
||||
_LOGGER.Debug("Setting default value [{0}] for column [{1}]", oDefaultValue, oGridColumn.FieldName)
|
||||
pGridView.SetRowCellValue(e.RowHandle, oGridColumn.FieldName, oDefaultValue)
|
||||
End If
|
||||
Next
|
||||
Next
|
||||
|
||||
Catch ex As Exception
|
||||
_LOGGER.Error(ex)
|
||||
Finally
|
||||
newRowModified = False
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
AddHandler pGridView.CustomRowCellEdit, Sub(sender As Object, e As CustomRowCellEditEventArgs)
|
||||
Try
|
||||
For Each oRow As DataRow In pColumnTable.Rows
|
||||
Dim oColumnName = oRow.Item("SPALTENNAME")
|
||||
Dim oEditorExists = GridTables_TestEditorExistsByControlAndColumn(pControlId, oColumnName)
|
||||
If oColumnName <> e.Column.FieldName Then
|
||||
Continue For
|
||||
End If
|
||||
|
||||
If oEditorExists Then
|
||||
Dim oEditor = _GridTables.Item(pControlId).Item(oColumnName)
|
||||
_LOGGER.Debug("Assigning Editor to Column [{0}]", oColumnName)
|
||||
e.RepositoryItem = oEditor
|
||||
Else
|
||||
_LOGGER.Debug("Editor for Column [{0}] does not exist", oColumnName)
|
||||
End If
|
||||
Next
|
||||
Catch ex As Exception
|
||||
_LOGGER.Warn("Error in CustomRowCellEdit for [{0}]", e.CellValue)
|
||||
_LOGGER.Error(ex)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
AddHandler pGridView.ValidatingEditor, Sub(sender As Object, e As BaseContainerValidateEditorEventArgs)
|
||||
Dim oRow As DataRowView = pGridView.GetRow(pGridView.FocusedRowHandle)
|
||||
Dim oColumnName = pGridView.FocusedColumn.FieldName
|
||||
_LOGGER.Debug("Validating Editor for Column [{0}]", oColumnName)
|
||||
GridTables_ValidateColumn(pGridView, pColumnTable, oColumnName, e.Value, e.Valid, e.ErrorText)
|
||||
End Sub
|
||||
|
||||
AddHandler pGridView.InvalidRowException, AddressOf View_InvalidRowException
|
||||
AddHandler pGridView.ValidatingEditor, AddressOf View_ValidatingEditor
|
||||
|
||||
' These handlers are all used for the custom DefaultValue functionality, additionally some code in the 'InitNewRow' event.
|
||||
' https://supportcenter.devexpress.com/ticket/details/t1035580/how-to-default-a-value-in-a-column-when-add-new-row-in-data-grid
|
||||
AddHandler pGridView.ShowingEditor, AddressOf View_ShowingEditor
|
||||
AddHandler pGridView.ShownEditor, AddressOf View_ShownEditor
|
||||
AddHandler pGridView.ValidateRow, AddressOf View_ValidateRow
|
||||
AddHandler pControl.LostFocus, AddressOf Control_LostFocus
|
||||
End Sub
|
||||
|
||||
Private Sub Control_LostFocus(sender As DevExpress.XtraGrid.GridControl, e As EventArgs)
|
||||
Dim oView2 As GridView = sender.FocusedView
|
||||
|
||||
' 19.08.2022:
|
||||
' Calling UpdateCurrentRow when newRowModified Is true
|
||||
' leads to some weird jumping of focus in the current cell.
|
||||
' This seems to fix it.
|
||||
If newRowModified = False Then
|
||||
oView2.UpdateCurrentRow()
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub View_ShowingEditor(sender As Object, e As CancelEventArgs)
|
||||
Dim view As GridView = TryCast(sender, GridView)
|
||||
_LOGGER.Debug("Showing editor.")
|
||||
If view.IsNewItemRow(view.FocusedRowHandle) AndAlso Not newRowModified Then
|
||||
_LOGGER.Debug("Adding new row.")
|
||||
view.AddNewRow()
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub View_ShownEditor(sender As Object, e As EventArgs)
|
||||
Dim view As GridView = TryCast(sender, GridView)
|
||||
If view.IsNewItemRow(view.FocusedRowHandle) Then
|
||||
_LOGGER.Debug("Attaching Modified Handler.")
|
||||
AddHandler view.ActiveEditor.Modified, Sub()
|
||||
_LOGGER.Debug("Row was modified.")
|
||||
newRowModified = True
|
||||
End Sub
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub View_ValidateRow(sender As Object, e As ValidateRowEventArgs)
|
||||
Dim view As GridView = TryCast(sender, GridView)
|
||||
If view.IsNewItemRow(e.RowHandle) AndAlso Not newRowModified Then
|
||||
_LOGGER.Debug("Deleting unused row")
|
||||
view.DeleteRow(e.RowHandle)
|
||||
End If
|
||||
|
||||
_LOGGER.Debug("Validating row. Resetting Modified.")
|
||||
newRowModified = False
|
||||
End Sub
|
||||
|
||||
Private Sub View_ValidatingEditor(sender As Object, e As BaseContainerValidateEditorEventArgs)
|
||||
Dim oValue As String = ObjectEx.NotNull(e.Value, "")
|
||||
|
||||
If oValue.Contains(" | ") Then
|
||||
oValue = oValue.Split(" | ").ToList().First()
|
||||
e.Value = oValue
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub View_InvalidRowException(sender As Object, e As InvalidRowExceptionEventArgs)
|
||||
e.ExceptionMode = ExceptionMode.NoAction
|
||||
End Sub
|
||||
|
||||
Private Function GridTables_TestEditorExistsByControlAndColumn(oControlId As Integer, pColumn As String) As Boolean
|
||||
If _GridTables.ContainsKey(oControlId) Then
|
||||
Dim oContainsKey = _GridTables.Item(oControlId).ContainsKey(pColumn)
|
||||
If oContainsKey AndAlso _GridTables.Item(oControlId).Item(pColumn) IsNot Nothing Then
|
||||
Return True
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
End Function
|
||||
|
||||
Private Function GridTables_ValidateColumn(pView As GridView, pColumnDefinition As DataTable, ColumnName As String, pValue As Object, ByRef pIsValid As Boolean, ByRef pErrorText As String) As Boolean
|
||||
Dim oColumn As DataRow = (From r As DataRow In pColumnDefinition.Rows
|
||||
Where r.Item("SPALTENNAME") = ColumnName
|
||||
Select r).FirstOrDefault()
|
||||
|
||||
Dim oGridColumn As GridColumn = (From c As GridColumn In pView.Columns
|
||||
Where c.FieldName = ColumnName
|
||||
Select c).FirstOrDefault()
|
||||
|
||||
Dim oIsRequired = oColumn.Item("VALIDATION")
|
||||
|
||||
Try
|
||||
Dim oRegex = ObjectEx.NotNull(oColumn.Item("REGEX_MATCH"), String.Empty)
|
||||
Dim oRegexMessage = ObjectEx.NotNull(oColumn.Item("REGEX_MESSAGE_DE"), String.Empty)
|
||||
If oRegex <> String.Empty Then
|
||||
Dim oMatch = New Regex(oRegex).IsMatch(pValue.ToString)
|
||||
Dim oDefaultMessage = "Wert entspricht nicht dem gefordertem Format!"
|
||||
Dim oMessage = IIf(oRegexMessage <> String.Empty, oRegexMessage, oDefaultMessage)
|
||||
|
||||
If oMatch = False Then
|
||||
pErrorText = oMessage
|
||||
pIsValid = False
|
||||
Return False
|
||||
End If
|
||||
End If
|
||||
Catch ex As Exception
|
||||
_LOGGER.Error(ex)
|
||||
End Try
|
||||
|
||||
If oIsRequired And (pValue IsNot Nothing AndAlso pValue.ToString = "") Then
|
||||
pErrorText = "Spalte muss ausgefüllt werden!"
|
||||
pIsValid = False
|
||||
Return False
|
||||
|
||||
End If
|
||||
|
||||
Return True
|
||||
End Function
|
||||
End Class
|
||||
|
||||
|
||||
End Namespace
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user