jj 14.03 add props for dgv, new value structure for clb

This commit is contained in:
JenneJ
2016-03-14 15:16:04 +01:00
parent 65ff842c1e
commit 0f271342b6
4 changed files with 105 additions and 13 deletions

View File

@@ -495,6 +495,12 @@ Public Class ClassControlCommandsUI
Continue For Continue For
End If End If
If TypeOf ctrl Is DevExpress.XtraEditors.CheckedListBoxControl Then
Dim id As Integer = DirectCast(ctrl.Tag, ClassControlMetadata).Id
UpdateMultipleValues(id, RecordID, CONTROL_VALUE)
Continue For
End If
Dim ValueExists = ClassDatabase.Execute_Scalar(String.Format("SELECT RECORD_ID FROM VWPMO_VALUES WHERE RECORD_ID = {0} AND CONTROL_ID = {1}", RecordID, CONTROL_ID)) Dim ValueExists = ClassDatabase.Execute_Scalar(String.Format("SELECT RECORD_ID FROM VWPMO_VALUES WHERE RECORD_ID = {0} AND CONTROL_ID = {1}", RecordID, CONTROL_ID))
If ValueExists Then ' Control Updaten If ValueExists Then ' Control Updaten
@@ -510,6 +516,31 @@ Public Class ClassControlCommandsUI
End Sub End Sub
Public Sub UpdateMultipleValues(ControlId As Integer, RecordId As Integer, value As String)
Try
Dim values As New List(Of String)(value.Split(";"))
Dim dt As DataTable = ClassDatabase.Return_Datatable(String.Format("SELECT VALUE FROM TBPMO_CONTROL_VALUE WHERE CONTROL_ID = {0} AND RECORD_ID = {1}", ControlId, RecordId))
' Konvertiere datatable zu liste
Dim oldValues = dt.AsEnumerable().Select(Of String)(Function(r)
Return r.Item("VALUE")
End Function).ToList()
Dim AddValues = values.Except(oldValues)
Dim RemoveValues = oldValues.Except(values)
For Each v As String In AddValues
ClassDatabase.Execute_non_Query(String.Format("INSERT INTO TBPMO_CONTROL_VALUE (CONTROL_ID, RECORD_ID, VALUE) VALUES({0}, {1}, '{2}')", ControlId, RecordId, v))
Next
For Each v As String In RemoveValues
ClassDatabase.Execute_non_Query(String.Format("DELETE FROM TBPMO_CONTROL_VALUE WHERE CONTROL_ID = {0} AND RECORD_ID = {1} AND VALUE = '{2}'", ControlId, RecordId, v))
Next
Catch ex As Exception
MsgBox("Error in UpdateMultipleValues:" & vbNewLine & ex.Message)
End Try
End Sub
Function GetControlValue(ctrl As Control) As String Function GetControlValue(ctrl As Control) As String
Dim type = ctrl.GetType().Name Dim type = ctrl.GetType().Name
@@ -547,7 +578,7 @@ Public Class ClassControlCommandsUI
Dim result_string As String Dim result_string As String
For Each item As DevExpress.XtraEditors.Controls.CheckedListBoxItem In chklbx.CheckedItems For Each item As DevExpress.XtraEditors.Controls.CheckedListBoxItem In chklbx.CheckedItems
result.Add(item.Value) result.Add(item.Value.ToString.Trim)
Next Next
result_string = String.Join(";", result) result_string = String.Join(";", result)
@@ -598,7 +629,7 @@ Public Class ClassControlCommandsUI
If LogErrorsOnly = False Then ClassLogger.Add(">> Checked ListBox record '" & rid.ToString & "' was linked successfully.", False) If LogErrorsOnly = False Then ClassLogger.Add(">> Checked ListBox record '" & rid.ToString & "' was linked successfully.", False)
End If End If
End If End If
End If End If
End If End If
Catch ex As Exception Catch ex As Exception

View File

@@ -66,7 +66,7 @@
If IsNothing(staticList) Or String.IsNullOrWhiteSpace(staticList) Then If IsNothing(staticList) Or String.IsNullOrWhiteSpace(staticList) Then
Return Nothing Return Nothing
Else Else
Return New List(Of String)(staticList.Split(";")) Return New List(Of String)(staticList.Split(";").ToArray())
End If End If
Catch ex As Exception Catch ex As Exception
MsgBox("Error in CheckForStaticList: " & vbNewLine & ex.Message) MsgBox("Error in CheckForStaticList: " & vbNewLine & ex.Message)
@@ -74,7 +74,7 @@
End Try End Try
End Function End Function
Private Shared Function GetSqlList(controlId As Integer, formId As Integer, connection_Id As Object, sqlCommand As String) Public Shared Function GetSqlList(controlId As Integer, formId As Integer, connection_Id As Object, sqlCommand As String) As DataTable
Try Try
If sqlCommand Is Nothing Or sqlCommand = String.Empty Then If sqlCommand Is Nothing Or sqlCommand = String.Empty Then
Return Nothing Return Nothing
@@ -178,6 +178,10 @@
control.DataSource = dt control.DataSource = dt
End Sub End Sub
Overloads Shared Sub SetDataSource(control As Windows.Forms.DataGridView, dt As DataTable)
control.DataSource = dt
End Sub
End Class End Class
Public Structure DynamicValue Public Structure DynamicValue
@@ -333,13 +337,11 @@
Public Class CheckedListBox : Inherits _ListControl Public Class CheckedListBox : Inherits _ListControl
Public Shared Sub LoadValue(control As DevExpress.XtraEditors.CheckedListBoxControl, value As String) Public Shared Sub LoadValue(control As DevExpress.XtraEditors.CheckedListBoxControl, values As List(Of Object))
If IsNothing(value) Then If IsNothing(values) Then
Exit Sub Exit Sub
End If End If
Dim values() As String = value.Split(";")
For Each v As String In values For Each v As String In values
Dim pos = control.FindStringExact(v) Dim pos = control.FindStringExact(v)
If pos >= 0 Then If pos >= 0 Then
@@ -391,4 +393,26 @@
End Class End Class
Public Class DataGridView : Inherits _ListControl
Public Shared Sub LoadList(control As Windows.Forms.DataGridView, formId As Integer, ConnId As Object, SQLCommand As String)
Dim controlId As Integer = DirectCast(control.Tag, ClassControlMetadata).Id
Dim dynamic As DynamicValue = GetDynamicValue(DirectCast(control.Tag, ClassControlMetadata).Id, formId, ConnId, SQLCommand)
' SQLCommand ignorieren
If dynamic.StaticList IsNot Nothing Then
Dim bindingSource As New BindingSource()
For Each item As String In dynamic.StaticList
bindingSource.Add(item)
Next
'control.DataSource = dynamic.StaticList
control.DataSource = bindingSource
End If
End Sub
End Class
End Namespace End Namespace

View File

@@ -399,6 +399,31 @@ Module ClassControlProperties
Public Class DataGridViewProperties Public Class DataGridViewProperties
Inherits CommonProperties Inherits CommonProperties
Private _show_column As Boolean
Private _static_list As String
<LocalizedCategoryAttribute("category_view")>
<LocalizedDescriptionAttribute("desc_showcolumn")>
Public Property ShowColumn() As Boolean
Get
Return _show_column
End Get
Set(value As Boolean)
_show_column = value
End Set
End Property
<LocalizedCategoryAttribute("category_data")>
<LocalizedDescriptionAttribute("desc_staticlist")>
Public Property StaticList() As String
Get
Return _static_list
End Get
Set(value As String)
_static_list = value
End Set
End Property
End Class End Class
Public Class PictureBoxProperties Public Class PictureBoxProperties
Inherits CommonProperties Inherits CommonProperties

View File

@@ -159,15 +159,15 @@ Public Class ClassControlValues
Dim ControlId As Integer = DirectCast(control.Tag, ClassControlMetadata).Id Dim ControlId As Integer = DirectCast(control.Tag, ClassControlMetadata).Id
' Wert per LINQ aus DT_ControlValues suchen der zur aktuellen controlId passt ' Wert per LINQ aus DT_ControlValues suchen der zur aktuellen controlId passt
Dim value = (From row In DT_ControlValues.AsEnumerable() Dim values As List(Of Object) = (From row In DT_ControlValues.AsEnumerable()
Where row.Item("CONTROL_ID") = ControlId Where row.Item("CONTROL_ID") = ControlId
Select row.Item("VALUE")).FirstOrDefault() Select row.Item("VALUE")).ToList()
If TypeOf control Is GroupBox Then If TypeOf control Is GroupBox Then
Dim groupbox As GroupBox = DirectCast(control, GroupBox) Dim groupbox As GroupBox = DirectCast(control, GroupBox)
LoadControlValues(RecordId, ParentRecordId, FormId, groupbox.Controls) LoadControlValues(RecordId, ParentRecordId, FormId, groupbox.Controls)
Else Else
LoadControlValue(RecordId, ParentRecordId, ControlId, control, value) LoadControlValue(RecordId, ParentRecordId, ControlId, control, values)
End If End If
Next Next
@@ -178,8 +178,15 @@ Public Class ClassControlValues
End Sub End Sub
Private Shared Sub LoadControlValue(recordId As Integer, parentRecordId As Integer, controlId As Integer, control As Control, value As Object) Private Shared Sub LoadControlValue(recordId As Integer, parentRecordId As Integer, controlId As Integer, control As Control, values As List(Of Object))
Try Try
' Für die meisten Controls wird nur das erste Element der Liste benötigt
Dim value As String = Nothing
If values.Count > 0 Then
value = values.Item(0)
End If
Select Case control.GetType() Select Case control.GetType()
Case GetType(TextBox) Case GetType(TextBox)
If LogErrorsOnly = False Then ClassLogger.Add(">> Sub LoadControlValueNeu - GetType(TextBox) ", False) If LogErrorsOnly = False Then ClassLogger.Add(">> Sub LoadControlValueNeu - GetType(TextBox) ", False)
@@ -219,7 +226,7 @@ Public Class ClassControlValues
Case GetType(DevExpress.XtraEditors.CheckedListBoxControl) Case GetType(DevExpress.XtraEditors.CheckedListBoxControl)
If LogErrorsOnly = False Then ClassLogger.Add(">> Sub LoadControlValueNeu - GetType(CheckedListBoxControl) ", False) If LogErrorsOnly = False Then ClassLogger.Add(">> Sub LoadControlValueNeu - GetType(CheckedListBoxControl) ", False)
Dim checkedlistbox As DevExpress.XtraEditors.CheckedListBoxControl = DirectCast(control, DevExpress.XtraEditors.CheckedListBoxControl) Dim checkedlistbox As DevExpress.XtraEditors.CheckedListBoxControl = DirectCast(control, DevExpress.XtraEditors.CheckedListBoxControl)
ControlLoader.CheckedListBox.LoadValue(checkedlistbox, value) ControlLoader.CheckedListBox.LoadValue(checkedlistbox, values)
Case GetType(PictureBox) Case GetType(PictureBox)
If LogErrorsOnly = False Then ClassLogger.Add(">> Sub LoadControlValueNeu - GetType(PictureBox) ", False) If LogErrorsOnly = False Then ClassLogger.Add(">> Sub LoadControlValueNeu - GetType(PictureBox) ", False)
@@ -290,6 +297,11 @@ Public Class ClassControlValues
Dim chlistbox = DirectCast(Ctrl, DevExpress.XtraEditors.CheckedListBoxControl) Dim chlistbox = DirectCast(Ctrl, DevExpress.XtraEditors.CheckedListBoxControl)
ControlLoader.CheckedListBox.LoadList(chlistbox, FormID, ConnID, sqlcommand) ControlLoader.CheckedListBox.LoadList(chlistbox, FormID, ConnID, sqlcommand)
Case GetType(DataGridView)
Dim gridview = DirectCast(Ctrl, DataGridView)
Dim noSQL As String = ""
ControlLoader.DataGridView.LoadList(gridview, FormID, ConnID, noSQL)
End Select End Select
swcontrol.Stop() swcontrol.Stop()