From 1cf5c979dba37c60d598c82b05aa848fdd84734e Mon Sep 17 00:00:00 2001 From: Jonathan Jenne Date: Thu, 21 Sep 2023 15:09:28 +0200 Subject: [PATCH] Add new nodes --- .../Classes/ClassNodeNavigation.vb | 103 +++--- .../NodeNavigation/ClassNodeCreator.vb | 39 ++ .../Classes/NodeNavigation/ClassNodeLoader.vb | 34 ++ .../My Project/licenses.licx | 10 +- app/DD-Record-Organizer/OrgFlow.vbproj | 11 + .../frmConstructor_Main.resx | 32 +- .../frmNewNode.Designer.vb | 171 +++++++++ app/DD-Record-Organizer/frmNewNode.resx | 120 +++++++ app/DD-Record-Organizer/frmNewNode.vb | 29 ++ .../frmNodeNavigation.Designer.vb | 43 ++- .../frmNodeNavigation.resx | 21 ++ app/DD-Record-Organizer/frmNodeNavigation.vb | 334 ++++++++++-------- .../frmStructureNodeConfig.Designer.vb | 3 +- .../frmStructureNodeConfig.resx | 14 +- .../frmStructureNodeConfig.vb | 10 +- 15 files changed, 740 insertions(+), 234 deletions(-) create mode 100644 app/DD-Record-Organizer/Classes/NodeNavigation/ClassNodeCreator.vb create mode 100644 app/DD-Record-Organizer/Classes/NodeNavigation/ClassNodeLoader.vb create mode 100644 app/DD-Record-Organizer/frmNewNode.Designer.vb create mode 100644 app/DD-Record-Organizer/frmNewNode.resx create mode 100644 app/DD-Record-Organizer/frmNewNode.vb diff --git a/app/DD-Record-Organizer/Classes/ClassNodeNavigation.vb b/app/DD-Record-Organizer/Classes/ClassNodeNavigation.vb index f82d08a..8d15193 100644 --- a/app/DD-Record-Organizer/Classes/ClassNodeNavigation.vb +++ b/app/DD-Record-Organizer/Classes/ClassNodeNavigation.vb @@ -6,6 +6,9 @@ Public Class ClassNodeNavigation Public Shared Datatable_Nodes As DataTable Public Shared TREEVIEW_IMAGELIST As ImageList Public Shared IMAGE_COLLECTION As ImageCollection + + + Public Shared Function CreateNodeProcedure(RECORD_ID As Integer, NODE_CONFIG_ID As Integer, NODE_CAPTION As String, NODE_ID1 As String, NODE_PARENT_ID As String, ADDED_WHO As String) Try Dim connection As New SqlConnection @@ -38,56 +41,56 @@ Public Class ClassNodeNavigation End Function - Public Shared Function CREATE_IMAGE_COLL(DT_IMAGELIST As DataTable) - IMAGE_COLLECTION = New ImageCollection - For Each row As DataRow In DT_IMAGELIST.Rows - Try - Dim bimage = row.Item("NODE_IMAGE") - If Not IsDBNull(bimage) Then - Dim Node_image = ByteArrayToBitmap(bimage) - IMAGE_COLLECTION.AddImage(Node_image, row.Item("GUID")) 'row.Item("GUID").ToString & "#" & row.Item("ENTITY_ID") - - End If - Catch ex As Exception - - End Try - - Next - End Function - - - Public Shared Function Return_Node(PARENT_ID As Integer, ParentNode As TreeNode) - Dim expression As String - expression = "PARENT_GUID = " & PARENT_ID 'Einschränkung auf Type und Parent_Guid - Dim foundRows() As DataRow - foundRows = Datatable_Nodes.Select(expression) - Dim q As Integer - For q = 0 To foundRows.GetUpperBound(0) - Dim ID9 = foundRows(q)("GUID") - Dim LevelEntity9 = foundRows(q)("ENTITY_ID") - Dim controlID9 = foundRows(q)("CONTROL_ID") - Dim nodetext9 = foundRows(q)("NODE_CAPTION") - Dim RECORD_ID = foundRows(q)("RECORD_ID") - Dim NODE_CONFIG_ID = foundRows(q)("NODE_CONFIG_ID") - ' Node erstellen.. - Dim NEW_NODE As TreeNode - NEW_NODE = New TreeNode(nodetext9) - ClassNodeNavigation.Check_NODE_CONFIG_ID(LevelEntity9, NEW_NODE) - NEW_NODE.Tag = ClassNodeNavigation.CreateNODE_TAG(LevelEntity9, ID9, RECORD_ID, NODE_CONFIG_ID) - - Dim index = 0 - For Each img As String In TREEVIEW_IMAGELIST.Images.Keys - If img.Replace("LEVEL#ENTITY", "") = "6" & LevelEntity9.ToString Then - Exit For - End If - index += 1 - Next - NEW_NODE.ImageIndex = index - NEW_NODE.SelectedImageIndex = index - ' ..und einfügen - ParentNode.Nodes.Add(NEW_NODE) - Next ' - End Function + 'Public Shared Function CREATE_IMAGE_COLL(DT_IMAGELIST As DataTable) + ' IMAGE_COLLECTION = New ImageCollection + ' For Each row As DataRow In DT_IMAGELIST.Rows + ' Try + ' Dim bimage = row.Item("NODE_IMAGE") + ' If Not IsDBNull(bimage) Then + ' Dim Node_image = ByteArrayToBitmap(bimage) + ' IMAGE_COLLECTION.AddImage(Node_image, row.Item("GUID")) 'row.Item("GUID").ToString & "#" & row.Item("ENTITY_ID") + + ' End If + ' Catch ex As Exception + + ' End Try + + ' Next + 'End Function + + + 'Public Shared Function Return_Node(PARENT_ID As Integer, ParentNode As TreeNode) + ' Dim expression As String + ' expression = "PARENT_GUID = " & PARENT_ID 'Einschränkung auf Type und Parent_Guid + ' Dim foundRows() As DataRow + ' foundRows = Datatable_Nodes.Select(expression) + ' Dim q As Integer + ' For q = 0 To foundRows.GetUpperBound(0) + ' Dim ID9 = foundRows(q)("GUID") + ' Dim LevelEntity9 = foundRows(q)("ENTITY_ID") + ' Dim controlID9 = foundRows(q)("CONTROL_ID") + ' Dim nodetext9 = foundRows(q)("NODE_CAPTION") + ' Dim RECORD_ID = foundRows(q)("RECORD_ID") + ' Dim NODE_CONFIG_ID = foundRows(q)("NODE_CONFIG_ID") + ' ' Node erstellen.. + ' Dim NEW_NODE As TreeNode + ' NEW_NODE = New TreeNode(nodetext9) + ' ClassNodeNavigation.Check_NODE_CONFIG_ID(LevelEntity9, NEW_NODE) + ' NEW_NODE.Tag = ClassNodeNavigation.CreateNODE_TAG(LevelEntity9, ID9, RECORD_ID, NODE_CONFIG_ID) + + ' Dim index = 0 + ' For Each img As String In TREEVIEW_IMAGELIST.Images.Keys + ' If img.Replace("LEVEL#ENTITY", "") = "6" & LevelEntity9.ToString Then + ' Exit For + ' End If + ' index += 1 + ' Next + ' NEW_NODE.ImageIndex = index + ' NEW_NODE.SelectedImageIndex = index + ' ' ..und einfügen + ' ParentNode.Nodes.Add(NEW_NODE) + ' Next ' + 'End Function Public Shared Sub Check_NODE_CONFIG_ID(ENTITY_ID As Integer, myTreeNode As TreeNode) Try If myTreeNode Is Nothing Then diff --git a/app/DD-Record-Organizer/Classes/NodeNavigation/ClassNodeCreator.vb b/app/DD-Record-Organizer/Classes/NodeNavigation/ClassNodeCreator.vb new file mode 100644 index 0000000..63ea8e8 --- /dev/null +++ b/app/DD-Record-Organizer/Classes/NodeNavigation/ClassNodeCreator.vb @@ -0,0 +1,39 @@ +Imports DevExpress.Utils +Imports DevExpress.XtraTreeList.Nodes +Imports DigitalData.Modules.Base +Imports DigitalData.Modules.Logging + +Public Class ClassNodeCreator + Inherits BaseClass + + Private ReadOnly _ImageList As ImageCollection + + Public Sub New(pLogConfig As LogConfig, pImageList As ImageCollection) + MyBase.New(pLogConfig) + _ImageList = pImageList + End Sub + + Public Function AddNode(pEntityId As Integer, pNodeCaption As String, pParentNodeId As Integer, pNodeConfigId As Integer) As Boolean + + ' Create a new Record in the given Entity + Dim oRecordId = ClassRecordCommands.CreateRecordProcedure(pEntityId) + If oRecordId = 0 Then + Logger.Warn("Could not create a record. Exiting.") + Return False + End If + + ' Update the proxy? + ClassProxy.PRPROXY_RECORD_UPD_INS(pEntityId, oRecordId) + + ' Create the Node in the Database + Dim oNodeIdentifier = $"CONFIG {oRecordId}-{pNodeConfigId}" + Dim oNodeId = ClassNodeNavigation.CreateNodeProcedure(oRecordId, pNodeConfigId, pNodeCaption, oNodeIdentifier, pParentNodeId, USER_USERNAME) + + If oNodeId = 0 Then + Logger.Warn("Node could not be created in database. Exiting.") + Return False + End If + + Return True + End Function +End Class diff --git a/app/DD-Record-Organizer/Classes/NodeNavigation/ClassNodeLoader.vb b/app/DD-Record-Organizer/Classes/NodeNavigation/ClassNodeLoader.vb new file mode 100644 index 0000000..8f74c91 --- /dev/null +++ b/app/DD-Record-Organizer/Classes/NodeNavigation/ClassNodeLoader.vb @@ -0,0 +1,34 @@ +Imports DigitalData.Modules.Base +Imports DigitalData.Modules.Database +Imports DigitalData.Modules.Logging + +Public Class ClassNodeLoader + Inherits BaseClass + + Private ReadOnly Database As MSSQLServer + + Public Sub New(pLogConfig As LogConfig, pDatabase As MSSQLServer) + MyBase.New(pLogConfig) + Database = pDatabase + End Sub + + Public Async Function LoadNodes(pEntityId As Integer) As Task(Of DataTable) + Dim oStructureNodeSql = $"SELECT + T.GUID, + T.RECORD_ID, + T.NODE_CONFIG_ID, + T.NODE_CAPTION, + T.ID1, + T.BACK_COLOR, + T.PARENT_GUID, + T.SEQUENCE, + T.TYPE_NODE + FROM + VWPMO_STRUCTURE_NODES T + INNER JOIN VWPMO_CONSTRUCTOR_FORMS T1 ON T.ENTITY_ID = T1.FORM_ID + WHERE T.ENTITY_ID = {pEntityId}" + Dim oTable = Await Database.GetDatatableAsync(oStructureNodeSql) + + Return oTable + End Function +End Class diff --git a/app/DD-Record-Organizer/My Project/licenses.licx b/app/DD-Record-Organizer/My Project/licenses.licx index ca26f57..8e8f744 100644 --- a/app/DD-Record-Organizer/My Project/licenses.licx +++ b/app/DD-Record-Organizer/My Project/licenses.licx @@ -1,5 +1,9 @@ -DevExpress.XtraMap.MapControl, DevExpress.XtraMap.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a -DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a -DevExpress.XtraTreeList.TreeList, DevExpress.XtraTreeList.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a DevExpress.XtraBars.Ribbon.RibbonControl, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraTreeList.TreeList, DevExpress.XtraTreeList.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraEditors.ComboBoxEdit, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraMap.MapControl, DevExpress.XtraMap.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraEditors.ButtonEdit, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a DevExpress.XtraEditors.Repository.RepositoryItemProgressBar, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraLayout.LayoutControl, DevExpress.XtraLayout.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a diff --git a/app/DD-Record-Organizer/OrgFlow.vbproj b/app/DD-Record-Organizer/OrgFlow.vbproj index 74de88f..63493c9 100644 --- a/app/DD-Record-Organizer/OrgFlow.vbproj +++ b/app/DD-Record-Organizer/OrgFlow.vbproj @@ -306,6 +306,8 @@ + + True True @@ -404,6 +406,12 @@ Form + + frmNewNode.vb + + + Form + frmNewVariant.vb @@ -872,6 +880,9 @@ frmMessageBox.vb + + frmNewNode.vb + frmNewVariant.vb diff --git a/app/DD-Record-Organizer/frmConstructor_Main.resx b/app/DD-Record-Organizer/frmConstructor_Main.resx index 67e7727..5f47430 100644 --- a/app/DD-Record-Organizer/frmConstructor_Main.resx +++ b/app/DD-Record-Organizer/frmConstructor_Main.resx @@ -496,7 +496,7 @@ 0, 0 - 910, 237 + 908, 237 2 @@ -592,7 +592,7 @@ 0, 0 - 699, 223 + 699, 231 4 @@ -634,7 +634,7 @@ 0, 0 - 488, 198 + 486, 206 5 @@ -681,10 +681,10 @@ Ansicht eingeschränkt - Klick Bearbeiten für Entsperren - 0, 198 + 0, 206 - 488, 25 + 486, 25 0 @@ -720,7 +720,7 @@ 1 - 1201, 227 + 1201, 235 1 @@ -896,7 +896,7 @@ 1 - 1201, 254 + 1201, 262 Detailansicht @@ -914,7 +914,7 @@ 0 - 1203, 282 + 1203, 290 3 @@ -1889,7 +1889,7 @@ 0, 0 - 1201, 254 + 1201, 264 301, 17 @@ -1918,7 +1918,7 @@ 0 - 1201, 254 + 1201, 264 NodeNavigation(beta) @@ -1963,7 +1963,7 @@ 1 - 1203, 529 + 1203, 539 2 @@ -1987,7 +1987,7 @@ Fill - 0, 158 + 0, 147 Panel1 @@ -2020,7 +2020,7 @@ 1 - 1203, 529 + 1203, 539 4 @@ -3085,13 +3085,13 @@ Funktionen - 1203, 158 + 1203, 147 - 0, 687 + 0, 686 - 1203, 22 + 1203, 23 RibbonStatusBar1 diff --git a/app/DD-Record-Organizer/frmNewNode.Designer.vb b/app/DD-Record-Organizer/frmNewNode.Designer.vb new file mode 100644 index 0000000..0c67dae --- /dev/null +++ b/app/DD-Record-Organizer/frmNewNode.Designer.vb @@ -0,0 +1,171 @@ + _ +Partial Class frmNewNode + Inherits DevExpress.XtraEditors.XtraForm + + 'Form overrides dispose to clean up the component list. + _ + Protected Overrides Sub Dispose(ByVal disposing As Boolean) + If disposing AndAlso components IsNot Nothing Then + components.Dispose() + End If + MyBase.Dispose(disposing) + End Sub + + 'Required by the Windows Form Designer + Private components As System.ComponentModel.IContainer + + 'NOTE: The following procedure is required by the Windows Form Designer + 'It can be modified using the Windows Form Designer. + 'Do not modify it using the code editor. + _ + Private Sub InitializeComponent() + Me.LayoutControl1 = New DevExpress.XtraLayout.LayoutControl() + Me.cmbNodeConfig = New DevExpress.XtraEditors.ComboBoxEdit() + Me.TextEdit1 = New DevExpress.XtraEditors.TextEdit() + Me.btnOK = New DevExpress.XtraEditors.SimpleButton() + Me.Root = New DevExpress.XtraLayout.LayoutControlGroup() + Me.LayoutControlItem2 = New DevExpress.XtraLayout.LayoutControlItem() + Me.LayoutControlItem1 = New DevExpress.XtraLayout.LayoutControlItem() + Me.LayoutControlItem3 = New DevExpress.XtraLayout.LayoutControlItem() + Me.EmptySpaceItem2 = New DevExpress.XtraLayout.EmptySpaceItem() + Me.EmptySpaceItem1 = New DevExpress.XtraLayout.EmptySpaceItem() + CType(Me.LayoutControl1, System.ComponentModel.ISupportInitialize).BeginInit() + Me.LayoutControl1.SuspendLayout() + CType(Me.cmbNodeConfig.Properties, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TextEdit1.Properties, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.Root, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.LayoutControlItem2, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.LayoutControlItem1, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.LayoutControlItem3, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.EmptySpaceItem2, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.EmptySpaceItem1, System.ComponentModel.ISupportInitialize).BeginInit() + Me.SuspendLayout() + ' + 'LayoutControl1 + ' + Me.LayoutControl1.Controls.Add(Me.cmbNodeConfig) + Me.LayoutControl1.Controls.Add(Me.TextEdit1) + Me.LayoutControl1.Controls.Add(Me.btnOK) + Me.LayoutControl1.Dock = System.Windows.Forms.DockStyle.Fill + Me.LayoutControl1.Location = New System.Drawing.Point(0, 0) + Me.LayoutControl1.Name = "LayoutControl1" + Me.LayoutControl1.Root = Me.Root + Me.LayoutControl1.Size = New System.Drawing.Size(441, 125) + Me.LayoutControl1.TabIndex = 0 + Me.LayoutControl1.Text = "LayoutControl1" + ' + 'cmbNodeConfig + ' + Me.cmbNodeConfig.Location = New System.Drawing.Point(73, 36) + Me.cmbNodeConfig.Name = "cmbNodeConfig" + Me.cmbNodeConfig.Properties.Buttons.AddRange(New DevExpress.XtraEditors.Controls.EditorButton() {New DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)}) + Me.cmbNodeConfig.Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.DisableTextEditor + Me.cmbNodeConfig.Size = New System.Drawing.Size(356, 20) + Me.cmbNodeConfig.StyleController = Me.LayoutControl1 + Me.cmbNodeConfig.TabIndex = 4 + ' + 'TextEdit1 + ' + Me.TextEdit1.Location = New System.Drawing.Point(73, 12) + Me.TextEdit1.Name = "TextEdit1" + Me.TextEdit1.Size = New System.Drawing.Size(356, 20) + Me.TextEdit1.StyleController = Me.LayoutControl1 + Me.TextEdit1.TabIndex = 5 + ' + 'btnOK + ' + Me.btnOK.Location = New System.Drawing.Point(326, 91) + Me.btnOK.Name = "btnOK" + Me.btnOK.Size = New System.Drawing.Size(103, 22) + Me.btnOK.StyleController = Me.LayoutControl1 + Me.btnOK.TabIndex = 6 + Me.btnOK.Text = "OK" + ' + 'Root + ' + Me.Root.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.[True] + Me.Root.GroupBordersVisible = False + Me.Root.Items.AddRange(New DevExpress.XtraLayout.BaseLayoutItem() {Me.LayoutControlItem2, Me.LayoutControlItem1, Me.LayoutControlItem3, Me.EmptySpaceItem2, Me.EmptySpaceItem1}) + Me.Root.Name = "Root" + Me.Root.Size = New System.Drawing.Size(441, 125) + Me.Root.TextVisible = False + ' + 'LayoutControlItem2 + ' + Me.LayoutControlItem2.Control = Me.TextEdit1 + Me.LayoutControlItem2.Location = New System.Drawing.Point(0, 0) + Me.LayoutControlItem2.Name = "LayoutControlItem2" + Me.LayoutControlItem2.Size = New System.Drawing.Size(421, 24) + Me.LayoutControlItem2.Text = "Knoten Titel" + Me.LayoutControlItem2.TextSize = New System.Drawing.Size(57, 13) + ' + 'LayoutControlItem1 + ' + Me.LayoutControlItem1.Control = Me.cmbNodeConfig + Me.LayoutControlItem1.Location = New System.Drawing.Point(0, 24) + Me.LayoutControlItem1.Name = "LayoutControlItem1" + Me.LayoutControlItem1.Size = New System.Drawing.Size(421, 24) + Me.LayoutControlItem1.Text = "Knoten Typ" + Me.LayoutControlItem1.TextSize = New System.Drawing.Size(57, 13) + ' + 'LayoutControlItem3 + ' + Me.LayoutControlItem3.Control = Me.btnOK + Me.LayoutControlItem3.Location = New System.Drawing.Point(314, 79) + Me.LayoutControlItem3.Name = "LayoutControlItem3" + Me.LayoutControlItem3.Size = New System.Drawing.Size(107, 26) + Me.LayoutControlItem3.TextSize = New System.Drawing.Size(0, 0) + Me.LayoutControlItem3.TextVisible = False + ' + 'EmptySpaceItem2 + ' + Me.EmptySpaceItem2.AllowHotTrack = False + Me.EmptySpaceItem2.Location = New System.Drawing.Point(0, 79) + Me.EmptySpaceItem2.Name = "EmptySpaceItem2" + Me.EmptySpaceItem2.Size = New System.Drawing.Size(314, 26) + Me.EmptySpaceItem2.TextSize = New System.Drawing.Size(0, 0) + ' + 'EmptySpaceItem1 + ' + Me.EmptySpaceItem1.AllowHotTrack = False + Me.EmptySpaceItem1.Location = New System.Drawing.Point(0, 48) + Me.EmptySpaceItem1.Name = "EmptySpaceItem1" + Me.EmptySpaceItem1.Size = New System.Drawing.Size(421, 31) + Me.EmptySpaceItem1.TextSize = New System.Drawing.Size(0, 0) + ' + 'frmNewNode + ' + Me.AcceptButton = Me.btnOK + Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font + Me.ClientSize = New System.Drawing.Size(441, 125) + Me.Controls.Add(Me.LayoutControl1) + Me.MaximizeBox = False + Me.MinimizeBox = False + Me.Name = "frmNewNode" + Me.Text = "Neuen Knoten erstellen" + CType(Me.LayoutControl1, System.ComponentModel.ISupportInitialize).EndInit() + Me.LayoutControl1.ResumeLayout(False) + CType(Me.cmbNodeConfig.Properties, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.TextEdit1.Properties, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.Root, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.LayoutControlItem2, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.LayoutControlItem1, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.LayoutControlItem3, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.EmptySpaceItem2, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.EmptySpaceItem1, System.ComponentModel.ISupportInitialize).EndInit() + Me.ResumeLayout(False) + + End Sub + + Friend WithEvents LayoutControl1 As DevExpress.XtraLayout.LayoutControl + Friend WithEvents Root As DevExpress.XtraLayout.LayoutControlGroup + Friend WithEvents cmbNodeConfig As DevExpress.XtraEditors.ComboBoxEdit + Friend WithEvents TextEdit1 As DevExpress.XtraEditors.TextEdit + Friend WithEvents btnOK As DevExpress.XtraEditors.SimpleButton + Friend WithEvents LayoutControlItem2 As DevExpress.XtraLayout.LayoutControlItem + Friend WithEvents LayoutControlItem1 As DevExpress.XtraLayout.LayoutControlItem + Friend WithEvents LayoutControlItem3 As DevExpress.XtraLayout.LayoutControlItem + Friend WithEvents EmptySpaceItem2 As DevExpress.XtraLayout.EmptySpaceItem + Friend WithEvents EmptySpaceItem1 As DevExpress.XtraLayout.EmptySpaceItem +End Class diff --git a/app/DD-Record-Organizer/frmNewNode.resx b/app/DD-Record-Organizer/frmNewNode.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/app/DD-Record-Organizer/frmNewNode.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/app/DD-Record-Organizer/frmNewNode.vb b/app/DD-Record-Organizer/frmNewNode.vb new file mode 100644 index 0000000..939a50b --- /dev/null +++ b/app/DD-Record-Organizer/frmNewNode.vb @@ -0,0 +1,29 @@ +Public Class frmNewNode + Public Property Title As String + Public Property Id As Integer + Public Property NodeConfigTypes As New List(Of NodeConfig) + + Public Class NodeConfig + Public Property Id + Public Property Name + + Public Overrides Function ToString() As String + Return Name + End Function + End Class + + Private Sub frmNewNode_Load(sender As Object, e As EventArgs) Handles MyBase.Load + cmbNodeConfig.Properties.Items.AddRange(NodeConfigTypes) + cmbNodeConfig.SelectedIndex = 0 + End Sub + + Private Sub SimpleButton1_Click(sender As Object, e As EventArgs) Handles btnOK.Click + Try + Dim oSelectedNodeConfig As NodeConfig = cmbNodeConfig.EditValue + Id = oSelectedNodeConfig.Id + Title = TextEdit1.EditValue + DialogResult = DialogResult.OK + Catch ex As Exception + End Try + End Sub +End Class \ No newline at end of file diff --git a/app/DD-Record-Organizer/frmNodeNavigation.Designer.vb b/app/DD-Record-Organizer/frmNodeNavigation.Designer.vb index 88f0c8b..bc132eb 100644 --- a/app/DD-Record-Organizer/frmNodeNavigation.Designer.vb +++ b/app/DD-Record-Organizer/frmNodeNavigation.Designer.vb @@ -42,6 +42,7 @@ Partial Class frmNodeNavigation Me.BbtnitmNodeReorder = New DevExpress.XtraBars.BarButtonItem() Me.bbtnItm_TV_Collape_Expand = New DevExpress.XtraBars.BarButtonItem() Me.checkShowPreview = New DevExpress.XtraBars.BarCheckItem() + Me.btnCreateNewNode = New DevExpress.XtraBars.BarButtonItem() Me.RibbonPage1 = New DevExpress.XtraBars.Ribbon.RibbonPage() Me.RibbonPageGroupView = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() Me.RibbonPageGroupRecord = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() @@ -112,9 +113,9 @@ Partial Class frmNodeNavigation 'ribbonNodeNavigation ' Me.ribbonNodeNavigation.ExpandCollapseItem.Id = 0 - Me.ribbonNodeNavigation.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.ribbonNodeNavigation.ExpandCollapseItem, Me.ribbonNodeNavigation.SearchEditItem, Me.bbtnitmRecEdit, Me.bsiInfo, Me.bbtnitmRecSave, Me.bsiDocID, Me.bsitmRecordID, Me.bbtnitmDocResultExport, Me.bbtnitmDocResultLayoutSave, Me.bbtnitmDocResultLayoutReset, Me.bbtnitmDocResultRefresh, Me.BarStaticItemLocked, Me.bsitmtInfoDoc, Me.BarButtonItem1, Me.bbtnitmReloadView, Me.BbtnitmNodeReorder, Me.bbtnItm_TV_Collape_Expand, Me.checkShowPreview}) + Me.ribbonNodeNavigation.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.ribbonNodeNavigation.ExpandCollapseItem, Me.ribbonNodeNavigation.SearchEditItem, Me.bbtnitmRecEdit, Me.bsiInfo, Me.bbtnitmRecSave, Me.bsiDocID, Me.bsitmRecordID, Me.bbtnitmDocResultExport, Me.bbtnitmDocResultLayoutSave, Me.bbtnitmDocResultLayoutReset, Me.bbtnitmDocResultRefresh, Me.BarStaticItemLocked, Me.bsitmtInfoDoc, Me.BarButtonItem1, Me.bbtnitmReloadView, Me.BbtnitmNodeReorder, Me.bbtnItm_TV_Collape_Expand, Me.checkShowPreview, Me.btnCreateNewNode}) Me.ribbonNodeNavigation.Location = New System.Drawing.Point(0, 0) - Me.ribbonNodeNavigation.MaxItemId = 19 + Me.ribbonNodeNavigation.MaxItemId = 22 Me.ribbonNodeNavigation.Name = "ribbonNodeNavigation" Me.ribbonNodeNavigation.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.RibbonPage1}) Me.ribbonNodeNavigation.PopupMenuAlignment = DevExpress.XtraBars.PopupMenuAlignment.Left @@ -123,7 +124,7 @@ Partial Class frmNodeNavigation Me.ribbonNodeNavigation.ShowExpandCollapseButton = DevExpress.Utils.DefaultBoolean.[True] Me.ribbonNodeNavigation.ShowMoreCommandsButton = DevExpress.Utils.DefaultBoolean.[False] Me.ribbonNodeNavigation.ShowToolbarCustomizeItem = False - Me.ribbonNodeNavigation.Size = New System.Drawing.Size(1307, 158) + Me.ribbonNodeNavigation.Size = New System.Drawing.Size(1307, 147) Me.ribbonNodeNavigation.StatusBar = Me.RibbonStatusBar1 Me.ribbonNodeNavigation.Toolbar.ShowCustomizeItem = False ' @@ -230,7 +231,7 @@ Partial Class frmNodeNavigation ' 'bbtnItm_TV_Collape_Expand ' - Me.bbtnItm_TV_Collape_Expand.Caption = "Collaps/Expand" + Me.bbtnItm_TV_Collape_Expand.Caption = "Ein- / Ausklappen" Me.bbtnItm_TV_Collape_Expand.Id = 17 Me.bbtnItm_TV_Collape_Expand.ImageOptions.SvgImage = CType(resources.GetObject("bbtnItm_TV_Collape_Expand.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage) Me.bbtnItm_TV_Collape_Expand.Name = "bbtnItm_TV_Collape_Expand" @@ -242,6 +243,14 @@ Partial Class frmNodeNavigation Me.checkShowPreview.ImageOptions.SvgImage = CType(resources.GetObject("checkShowPreview.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage) Me.checkShowPreview.Name = "checkShowPreview" ' + 'btnCreateNewNode + ' + Me.btnCreateNewNode.Caption = "Neuen Knoten anlegen" + Me.btnCreateNewNode.Enabled = False + Me.btnCreateNewNode.Id = 19 + Me.btnCreateNewNode.ImageOptions.SvgImage = CType(resources.GetObject("btnCreateNewNode.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage) + Me.btnCreateNewNode.Name = "btnCreateNewNode" + ' 'RibbonPage1 ' Me.RibbonPage1.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroupView, Me.RibbonPageGroupRecord, Me.RibbonPageGroupDocResult, Me.RibbonPageGroup1, Me.RPGNodes}) @@ -285,6 +294,7 @@ Partial Class frmNodeNavigation ' Me.RPGNodes.ItemLinks.Add(Me.BbtnitmNodeReorder) Me.RPGNodes.ItemLinks.Add(Me.bbtnItm_TV_Collape_Expand) + Me.RPGNodes.ItemLinks.Add(Me.btnCreateNewNode) Me.RPGNodes.Name = "RPGNodes" Me.RPGNodes.Text = "Knoten" ' @@ -295,10 +305,10 @@ Partial Class frmNodeNavigation Me.RibbonStatusBar1.ItemLinks.Add(Me.bsitmRecordID) Me.RibbonStatusBar1.ItemLinks.Add(Me.BarStaticItemLocked) Me.RibbonStatusBar1.ItemLinks.Add(Me.bsitmtInfoDoc) - Me.RibbonStatusBar1.Location = New System.Drawing.Point(0, 822) + Me.RibbonStatusBar1.Location = New System.Drawing.Point(0, 667) Me.RibbonStatusBar1.Name = "RibbonStatusBar1" Me.RibbonStatusBar1.Ribbon = Me.ribbonNodeNavigation - Me.RibbonStatusBar1.Size = New System.Drawing.Size(1307, 22) + Me.RibbonStatusBar1.Size = New System.Drawing.Size(1307, 23) ' 'RibbonPage2 ' @@ -320,7 +330,7 @@ Partial Class frmNodeNavigation ' Me.SplitContainerMain.Panel2.Controls.Add(Me.SplitContainer1) Me.SplitContainerMain.Panel2.Text = "Panel2" - Me.SplitContainerMain.Size = New System.Drawing.Size(1297, 664) + Me.SplitContainerMain.Size = New System.Drawing.Size(1295, 520) Me.SplitContainerMain.SplitterPosition = 289 Me.SplitContainerMain.TabIndex = 2 ' @@ -331,6 +341,7 @@ Partial Class frmNodeNavigation Me.TreeListDevexpress.Appearance.FocusedRow.Options.UseBackColor = True Me.TreeListDevexpress.Caption = "Instandhaltung View" Me.TreeListDevexpress.Dock = System.Windows.Forms.DockStyle.Fill + Me.TreeListDevexpress.KeyFieldName = "GUID" Me.TreeListDevexpress.Location = New System.Drawing.Point(0, 0) Me.TreeListDevexpress.Name = "TreeListDevexpress" Me.TreeListDevexpress.BeginUnboundLoad() @@ -356,7 +367,8 @@ Partial Class frmNodeNavigation Me.TreeListDevexpress.OptionsView.ShowTreeLines = DevExpress.Utils.DefaultBoolean.[False] Me.TreeListDevexpress.OptionsView.ShowVertLines = False Me.TreeListDevexpress.OptionsView.TreeLineStyle = DevExpress.XtraTreeList.LineStyle.Dark - Me.TreeListDevexpress.Size = New System.Drawing.Size(289, 664) + Me.TreeListDevexpress.ParentFieldName = "PARENT_GUID" + Me.TreeListDevexpress.Size = New System.Drawing.Size(289, 520) Me.TreeListDevexpress.StateImageList = Me.ImageCollection1 Me.TreeListDevexpress.TabIndex = 1 ' @@ -379,8 +391,8 @@ Partial Class frmNodeNavigation 'SplitContainer1.Panel2 ' Me.SplitContainer1.Panel2.Controls.Add(Me.GridControlDocSearch) - Me.SplitContainer1.Size = New System.Drawing.Size(998, 664) - Me.SplitContainer1.SplitterDistance = 214 + Me.SplitContainer1.Size = New System.Drawing.Size(994, 520) + Me.SplitContainer1.SplitterDistance = 167 Me.SplitContainer1.TabIndex = 0 ' 'pnlControls @@ -390,7 +402,7 @@ Partial Class frmNodeNavigation Me.pnlControls.Dock = System.Windows.Forms.DockStyle.Fill Me.pnlControls.Location = New System.Drawing.Point(0, 0) Me.pnlControls.Name = "pnlControls" - Me.pnlControls.Size = New System.Drawing.Size(998, 214) + Me.pnlControls.Size = New System.Drawing.Size(994, 167) Me.pnlControls.TabIndex = 0 ' 'GridControlDocSearch @@ -403,7 +415,7 @@ Partial Class frmNodeNavigation Me.GridControlDocSearch.Location = New System.Drawing.Point(0, 0) Me.GridControlDocSearch.MainView = Me.GridViewDoc_Search Me.GridControlDocSearch.Name = "GridControlDocSearch" - Me.GridControlDocSearch.Size = New System.Drawing.Size(998, 446) + Me.GridControlDocSearch.Size = New System.Drawing.Size(994, 349) Me.GridControlDocSearch.TabIndex = 8 Me.GridControlDocSearch.TabStop = False Me.GridControlDocSearch.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.GridViewDoc_Search}) @@ -591,7 +603,7 @@ Partial Class frmNodeNavigation Me.SplitContainerDocView.Collapsed = True Me.SplitContainerDocView.CollapsePanel = DevExpress.XtraEditors.SplitCollapsePanel.Panel2 Me.SplitContainerDocView.Dock = System.Windows.Forms.DockStyle.Fill - Me.SplitContainerDocView.Location = New System.Drawing.Point(0, 158) + Me.SplitContainerDocView.Location = New System.Drawing.Point(0, 147) Me.SplitContainerDocView.Name = "SplitContainerDocView" ' 'SplitContainerDocView.Panel1 @@ -603,7 +615,7 @@ Partial Class frmNodeNavigation ' Me.SplitContainerDocView.Panel2.Controls.Add(Me.DocumentViewer) Me.SplitContainerDocView.Panel2.Text = "Panel2" - Me.SplitContainerDocView.Size = New System.Drawing.Size(1307, 664) + Me.SplitContainerDocView.Size = New System.Drawing.Size(1307, 520) Me.SplitContainerDocView.SplitterPosition = 969 Me.SplitContainerDocView.TabIndex = 0 ' @@ -620,7 +632,7 @@ Partial Class frmNodeNavigation ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font - Me.ClientSize = New System.Drawing.Size(1307, 844) + Me.ClientSize = New System.Drawing.Size(1307, 690) Me.Controls.Add(Me.SplitContainerDocView) Me.Controls.Add(Me.RibbonStatusBar1) Me.Controls.Add(Me.ribbonNodeNavigation) @@ -716,4 +728,5 @@ Partial Class frmNodeNavigation Friend WithEvents DocumentViewer As DigitalData.Controls.DocumentViewer.DocumentViewer Friend WithEvents RibbonPageGroupView As DevExpress.XtraBars.Ribbon.RibbonPageGroup Friend WithEvents checkShowPreview As DevExpress.XtraBars.BarCheckItem + Friend WithEvents btnCreateNewNode As DevExpress.XtraBars.BarButtonItem End Class diff --git a/app/DD-Record-Organizer/frmNodeNavigation.resx b/app/DD-Record-Organizer/frmNodeNavigation.resx index 9e4be43..a133821 100644 --- a/app/DD-Record-Organizer/frmNodeNavigation.resx +++ b/app/DD-Record-Organizer/frmNodeNavigation.resx @@ -448,6 +448,27 @@ OCwyNCwxOCwyNHoiIGNsYXNzPSJCbHVlIiAvPg0KICA8L2c+DQo8L3N2Zz4L + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40 + LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl + dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAGICAAAC77u/ + PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi + IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv + MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh + Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg + MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5Z + ZWxsb3d7ZmlsbDojRkZCMTE1O30KCS5CbGFja3tmaWxsOiM3MjcyNzI7fQoJLkdyZWVue2ZpbGw6IzAz + OUMyMzt9CgkuUmVke2ZpbGw6I0QxMUMxQzt9Cgkuc3Qwe29wYWNpdHk6MC43NTt9Cgkuc3Qxe29wYWNp + dHk6MC41O30KPC9zdHlsZT4NCiAgPGcgaWQ9IkFkZENpcmNsZWQiPg0KICAgIDxwYXRoIGQ9Ik0xNiw0 + QzkuNCw0LDQsOS40LDQsMTZzNS40LDEyLDEyLDEyczEyLTUuNCwxMi0xMlMyMi42LDQsMTYsNHogTTI0 + LDE4aC02djZoLTR2LTZIOHYtNGg2VjhoNHY2aDZWMTh6IiBjbGFzcz0iR3JlZW4iIC8+DQogIDwvZz4N + Cjwvc3ZnPgs= + + + + 17, 17 + 17, 17 diff --git a/app/DD-Record-Organizer/frmNodeNavigation.vb b/app/DD-Record-Organizer/frmNodeNavigation.vb index 8e9d6d1..0098923 100644 --- a/app/DD-Record-Organizer/frmNodeNavigation.vb +++ b/app/DD-Record-Organizer/frmNodeNavigation.vb @@ -20,28 +20,20 @@ Imports System.Configuration Public Class frmNodeNavigation #Region "Laufzeitvariablen & Konstanten" - Dim DT_STRUCTURE_NODES As DataTable - Dim DT_ADDING_USERS As DataTable - Dim DT_VWPMO_CONSTRUCTOR_FORMS As DataTable + Private DT_STRUCTURE_NODES As DataTable + Private DT_ADDING_USERS As DataTable + Private DT_VWPMO_CONSTRUCTOR_FORMS As DataTable Private RunningTask As Task Private RunningTaskTokenSource As New CancellationTokenSource Private RunningTaskToken = RunningTaskTokenSource.Token - Private oEntityID As Int16 - Private oConstructID As Int16 + Private _EntityId As Short + Private oConstructID As Short Private CONSTRUCTORID As Integer - Private CONSTRUCTOR_DETAIL_ID As Int16 - Private oFilterActive As Boolean = False - Private ROW_READ_ONLY As Boolean = False + Private CONSTRUCTOR_DETAIL_ID As Short + Private _FilterActive As Boolean = False + Private _RowReadOnly As Boolean = False Private ADD_RECORDS_CONSTR As Boolean = True Private TV_Collapse_ExpandState = "Collapse" - Public CtrlBuilder As ClassControlBuilder - Public CtrlCommandUI As ClassControlCommandsUI - Public Enum EditState - None - Insert - Update - Delete - End Enum Private WindowsEx As WindowsEx @@ -73,47 +65,63 @@ Public Class frmNodeNavigation Private IW_USER As String Private IW_COMMENT As String Private INWORK_FILE As Boolean - Private Const SEE_MASK_INVOKEIDLIST = &HC - Private Const SEE_MASK_NOCLOSEPROCESS = &H40 - Private Const SEE_MASK_FLAG_NO_UI = &H400 - Public Const SW_SHOW As Short = 5 Private CONTROL_DOCTYPE_MATCH As Integer = 0 Private FocusedNode As TreeListNode Private MyTreeListViewState As ClassTreeListViewState -#End Region - + Private AvailableConfigNodes As New List(Of frmNewNode.NodeConfig) + Private CurrentNodeConfigId As Integer = 0 Private DocList As ClassWindreamDocGrid + Public CtrlBuilder As ClassControlBuilder + Public CtrlCommandUI As ClassControlCommandsUI + + Private ClassNodeLoader As ClassNodeLoader + + Private Debug As Boolean = False + + Public Enum EditState + None + Insert + Update + Delete + End Enum + +#End Region + Public Sub New(pEntityID As Int16, pConstructID As Int16) ' Dieser Aufruf ist für den Designer erforderlich. InitializeComponent() ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu. - oEntityID = pEntityID + _EntityId = pEntityID oConstructID = pConstructID DocList = New ClassWindreamDocGrid(GridViewDoc_Search) WindowsEx = New WindowsEx(LOGCONFIG) + ClassNodeLoader = New ClassNodeLoader(LOGCONFIG, MYDB_ECM) End Sub + Private Function Get_Splitter_Layout_Filename() Dim Filename As String = String.Format("{0}-{1}-SplitterLayout.xml", CONSTRUCTOR_DETAIL_ID, CONSTRUCTOR_DETAIL_ID.ToString) Return Path.Combine(Application.UserAppDataPath(), Filename) End Function + Sub Save_Splitter_Layout() Try Dim XMLPath = Get_Splitter_Layout_Filename() Dim layout As New ClassLayout(XMLPath) - Dim settings As New System.Collections.Generic.List(Of ClassSetting) - - settings.Add(New ClassSetting("SplitViewDetailsSplitterPosition", SplitContainer1.SplitterDistance)) - settings.Add(New ClassSetting("SplitViewMainSplitterPosition", SplitContainerMain.SplitterPosition)) + Dim settings As New List(Of ClassSetting) From { + New ClassSetting("SplitViewDetailsSplitterPosition", SplitContainer1.SplitterDistance), + New ClassSetting("SplitViewMainSplitterPosition", SplitContainerMain.SplitterPosition) + } layout.Save(settings) Catch ex As Exception ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", ex.Message, ex.StackTrace) End Try End Sub + Sub Load_Splitter_Layout() Try Dim XMLPath As String = Get_Splitter_Layout_Filename() @@ -145,7 +153,7 @@ Public Class frmNodeNavigation ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", ex.Message, ex.StackTrace) End Try End Sub - Private Sub frmNodeNavigation_Load(sender As Object, e As EventArgs) Handles Me.Load + Private Async Function frmNodeNavigation_Load(sender As Object, e As EventArgs) As Task Handles Me.Load CONSTRUCTORID = CURRENT_CONSTRUCTOR_ID Dim Sql = String.Format("SELECT *, [dbo].[FNPMO_GETOBJECTCAPTION]('{0}','FORMVIEW_TITLE' + CONVERT(VARCHAR(5), FORM_VIEW_ID), {1}) AS 'CAPTION' " & "FROM VWPMO_CONSTRUCTOR_FORMS WHERE SCREEN_ID = {2} AND CONSTRUCT_ID = {3} ORDER BY SEQUENCE", USER_LANGUAGE, CURRENT_SCREEN_ID, CURRENT_SCREEN_ID, oConstructID) @@ -187,73 +195,69 @@ Public Class frmNodeNavigation Load_Datafor_Entity() FORM_LOADED = True - Catch ex As System.Exception + Catch ex As Exception ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", ex.Message, "Error in Loading Form part 4") End Try - Load_nodes() - End Sub - Private Sub Load_nodes() + Await Load_nodes() + End Function + Private Async Function Load_nodes() As Task Dim oHandle = SplashScreenManager.ShowOverlayForm(Me) Try - - Dim oToken = RunningTaskTokenSource.Token - Dim Sql = String.Format("select T.GUID,T.RECORD_ID, T.NODE_CONFIG_ID,T.NODE_CAPTION,T.ID1, T.BACK_COLOR,T.PARENT_GUID, T.SEQUENCE from VWPMO_STRUCTURE_NODES T - INNER JOIN VWPMO_CONSTRUCTOR_FORMS T1 ON T.ENTITY_ID = T1.FORM_ID WHERE T.ENTITY_ID = {0}", CURRENT_ENTITY_ID) - DT_STRUCTURE_NODES = MYDB_ECM.GetDatatable(Sql) - Sql = String.Format("select T.* from TBPMO_STRUCTURE_NODES_CONFIGURATION T INNER JOIN VWPMO_CONSTRUCTOR_FORMS T1 ON T.ENTITY_ID = T1.FORM_ID WHERE T.ENTITY_ID = {0}", CURRENT_ENTITY_ID) - Dim DT_TREEVIEW_CONFIGURATION = MYDB_ECM.GetDatatable(Sql) + Dim oTable = Await ClassNodeLoader.LoadNodes(CURRENT_ENTITY_ID) + DT_STRUCTURE_NODES = oTable + 'Dim oToken = RunningTaskTokenSource.Token + 'Dim oStructureNodeSql = $"SELECT + ' T.GUID, + ' T.RECORD_ID, + ' T.NODE_CONFIG_ID, + ' T.NODE_CAPTION, + ' T.ID1, + ' T.BACK_COLOR, + ' T.PARENT_GUID, + ' T.SEQUENCE, + ' T.TYPE_NODE + ' FROM + ' VWPMO_STRUCTURE_NODES T + 'INNER JOIN VWPMO_CONSTRUCTOR_FORMS T1 ON T.ENTITY_ID = T1.FORM_ID + 'WHERE T.ENTITY_ID = {CURRENT_ENTITY_ID}" + 'DT_STRUCTURE_NODES = MYDB_ECM.GetDatatable(oStructureNodeSql) + + Dim oNodeConfigSql = String.Format("select T.* from TBPMO_STRUCTURE_NODES_CONFIGURATION T INNER JOIN VWPMO_CONSTRUCTOR_FORMS T1 ON T.ENTITY_ID = T1.FORM_ID WHERE T.ENTITY_ID = {0}", CURRENT_ENTITY_ID) + Dim DT_TREEVIEW_CONFIGURATION = MYDB_ECM.GetDatatable(oNodeConfigSql) For Each row As DataRow In DT_TREEVIEW_CONFIGURATION.Rows Try - Dim bimage = row.Item("NODE_IMAGE") - If Not IsDBNull(bimage) Then - Dim Node_image = ByteArrayToBitmap(bimage) - ImageCollection1.AddImage(Node_image, row.Item("GUID")) + Dim bimage = row.ItemEx(Of Object)("NODE_IMAGE", Nothing) + If bimage Is Nothing Then + Continue For End If - Catch ex As Exception + Dim oNodeImage = ByteArrayToBitmap(bimage) + ImageCollection1.AddImage(oNodeImage, row.Item("GUID")) + Catch ex As Exception End Try - Next - - TreeListDevexpress.DataSource = DT_STRUCTURE_NODES TreeListDevexpress.KeyFieldName = "GUID" TreeListDevexpress.ParentFieldName = "PARENT_GUID" TreeListDevexpress.Columns("SEQUENCE").SortOrder = SortOrder.Ascending TreeListDevexpress.StateImageList = ImageCollection1 - Try - TreeListDevexpress.Columns.ColumnByName("colRECORD_ID").Visible = False - Catch ex As Exception - - End Try - Try - TreeListDevexpress.Columns.ColumnByName("colNODE_CONFIG_ID").Visible = False - Catch ex As Exception - - End Try - Try - TreeListDevexpress.Columns.ColumnByName("colBACK_COLOR").Visible = False - TreeListDevexpress.Columns.ColumnByName("colID1").Visible = False - Catch ex As Exception - - End Try - Try - TreeListDevexpress.Columns.ColumnByName("SEQUENCE").Visible = False - Catch ex As Exception + Dim oVisibleColumns = New List(Of String) From {"NODE_CAPTION"} + For Each oColumn In TreeListDevexpress.Columns + If oVisibleColumns.Contains(oColumn.FieldName) = False Then + oColumn.Visible = False + End If + Next - End Try Catch ex As Exception LOGGER.Error(ex) Finally SplashScreenManager.CloseOverlayForm(oHandle) End Try - - - End Sub + End Function Private Sub TreeListDevexpress_ColumnFilterChanged(sender As Object, e As EventArgs) Dim tree As TreeList = TryCast(sender, TreeList) Dim filteredColumns As List(Of TreeListColumn) = tree.Columns.Cast(Of TreeListColumn)().Where(Function(c) c.FilterInfo.AutoFilterRowValue IsNot Nothing).ToList() @@ -299,12 +303,12 @@ Public Class frmNodeNavigation End Sub End Class - - Private Async Sub TreeListDevexpress_FocusedNodeChanged(sender As Object, e As FocusedNodeChangedEventArgs) Handles TreeListDevexpress.FocusedNodeChanged FocusedNode = Nothing - If oFilterActive Then + btnCreateNewNode.Enabled = False + + If _FilterActive Then Exit Sub End If @@ -328,18 +332,42 @@ Public Class frmNodeNavigation Exit Sub End If - If oNodeId = 0 Then - Exit Sub - End If + 'If oNodeId = 0 Then + ' Exit Sub + 'End If Dim oRowView As DataRowView = oRowObject Dim oRow As DataRow = oRowView.Row Dim oGuid = oRow.Item("GUID") Dim oNodeCaption = oRow.Item("NODE_CAPTION") + Dim oNodeConfigId = oRow.Item("NODE_CONFIG_ID") Dim oRecordId = oRow.ItemEx("RECORD_ID", 0) Dim oHasRecordId = (oRecordId > 0) + Dim oIsConfigNode = (oNodeConfigId = 1000) Dim oParentNode = e.Node.ParentNode + ' BEGIN NEW NODE + Dim oConfigNodeChildren = FocusedNode.Nodes.Where(Function(n) n.Item("TYPE_NODE") = 1000) + Dim oHasConfigNodeChildren = oConfigNodeChildren.Any() + Dim oConfigNodeChildrenList = oConfigNodeChildren.ToList() + + CurrentNodeConfigId = oNodeConfigId + + AvailableConfigNodes.Clear() + Dim oNodeConfigList = NODE_CONFIGURABLE_NODES_DT.Select($"PARENT_NODE = {oNodeConfigId}"). + Cast(Of DataRow). + Select(Function(row) New frmNewNode.NodeConfig() With { + .Id = row.Item("GUID"), + .Name = row.Item("NAME") + }).ToList() + AvailableConfigNodes = oNodeConfigList + + If AvailableConfigNodes.Count > 0 Then + btnCreateNewNode.Enabled = True + End If + + ' END NEW NODE + If oHasRecordId Then Update_Status_Label(True, $"NodeGUID {oGuid} - RecordID {oRecordId}", EditState.None) Else @@ -357,7 +385,7 @@ Public Class frmNodeNavigation CURRENT_RECORD_ID = oRecordId ClassHelper.GetDocrecordLinks(CURRENT_RECORD_ID) - CURRENT_ENTITY_ID = oEntityID + CURRENT_ENTITY_ID = _EntityId CURRENT_NODE_GUID = oNodeId SELECTED_NODE_CAPTION = oNodeCaption CURRENT_SEARCH_TYPE = "RECORD" @@ -365,12 +393,12 @@ Public Class frmNodeNavigation ' muss vor show selected record data kommen, ' sodass die datasource für die angehakten werte existiert (checked list box) CtrlBuilder.WatchRecordChanges = False - ClassControlValues.LoadControlValuesListWithPlaceholders(oEntityID, CURRENT_RECORD_ID, 0, CtrlBuilder.AllControls, oEntityID) + ClassControlValues.LoadControlValuesListWithPlaceholders(_EntityId, CURRENT_RECORD_ID, 0, CtrlBuilder.AllControls, _EntityId) CtrlBuilder.WatchRecordChanges = True Await Show_Selected_Record_Data(CURRENT_RECORD_ID) - ClassRightManagement.Check_Set_Rights(CURRENT_RECORD_ID, oEntityID) + ClassRightManagement.Check_Set_Rights(CURRENT_RECORD_ID, _EntityId) CONTROL_HANDLING() @@ -474,10 +502,10 @@ Public Class frmNodeNavigation Try - If oEntityID <> CURRENT_ENTITY_ID Then + If _EntityId <> CURRENT_ENTITY_ID Then LOGGER.Info("Entity-Data needs to be reloaded...") - CURRENT_ENTITY_ID = oEntityID + CURRENT_ENTITY_ID = _EntityId CURRENT_CONSTRUCTOR_ID = oConstructID Load_Adding_users() Load_Configurable_Nodes() @@ -495,7 +523,7 @@ Public Class frmNodeNavigation Dim result = (From form In DT_VWPMO_CONSTRUCTOR_FORMS.AsEnumerable() Select form - Where form.Item("FORM_ID") = oEntityID).Single() + Where form.Item("FORM_ID") = _EntityId).Single() CONSTRUCTOR_DETAIL_ID = result.Item("GUID") ' CONSTRUCT_EXPAND = result.Item("EXPAND") Dim FORM_DATE_FORMAT = result.Item("DATE_FORMAT") @@ -517,7 +545,7 @@ Public Class frmNodeNavigation If DT_ADDING_USERS.Rows.Count > 0 Then 'Überprüfen ob für diese Entität ein spezifischer windream-User verwendet wird, wenn Dateien abgelegt werden? Dim query1 = From _user In DT_ADDING_USERS.AsEnumerable() - Select _user Where _user.Item("ENTITY_ID") = oEntityID + Select _user Where _user.Item("ENTITY_ID") = _EntityId Dim Rows1 = query1.ToList() For Each _row In Rows1 FAU_AD_DOMAIN = _row.Item("AD_DOMAIN").ToString() @@ -553,7 +581,7 @@ Public Class frmNodeNavigation Dim expression As String Dim sql 'Dim sql = "SELECT CONTROL_ID, CONTROL_READ_ONLY FROM VWPMO_CONTROL_SCREEN WHERE CTRLTYPE_ID NOT IN (1) AND CONTROL_ENTITY_ID = " & oEntityID - DT_CONTROLS_ENTITY = ClassHelper.FILTER_DATATABLE(DT_VWPMO_CONTROL_SCREEN, "CTRLTYPE_ID NOT IN (1) AND CONTROL_ENTITY_ID = " & oEntityID, "") + DT_CONTROLS_ENTITY = ClassHelper.FILTER_DATATABLE(DT_VWPMO_CONTROL_SCREEN, "CTRLTYPE_ID NOT IN (1) AND CONTROL_ENTITY_ID = " & _EntityId, "") expression = "CONTROL_READ_ONLY = " & 1 @@ -576,7 +604,7 @@ Public Class frmNodeNavigation Dim resultDT_VWPMO_CONSTRUCTOR_FORMS = (From form In DT_VWPMO_CONSTRUCTOR_FORMS.AsEnumerable() Select form - Where form.Item("FORM_ID") = oEntityID).Single() + Where form.Item("FORM_ID") = _EntityId).Single() CURRENT_CONSTRUCTOR_DETAIL_ID = resultDT_VWPMO_CONSTRUCTOR_FORMS.Item("GUID") @@ -591,25 +619,25 @@ Public Class frmNodeNavigation - expression = String.Format("ENTITY_ID = {0} AND LANGUAGE = '{1}'", oEntityID, USER_LANGUAGE) + expression = String.Format("ENTITY_ID = {0} AND LANGUAGE = '{1}'", _EntityId, USER_LANGUAGE) DT_COLUMNS_GRID_ENTITY = ClassHelper.FILTER_DATATABLE(DT_DOCSEARCH_RESULTLIST_CONFIG, expression, "SEQUENCE") - expression = String.Format("ENTITY_ID = {0} AND TYPE_ID = 10 AND LANGUAGE = '{1}'", oEntityID, USER_LANGUAGE) + expression = String.Format("ENTITY_ID = {0} AND TYPE_ID = 10 AND LANGUAGE = '{1}'", _EntityId, USER_LANGUAGE) DT_DOCRESULT_DROPDOWN_ITEMS = ClassHelper.FILTER_DATATABLE(CURRENT_TBPMO_DOCRESULT_DROPDOWN_ITEMS, expression, "SEQUENCE") LOGGER.Debug($"Found {DT_DOCRESULT_DROPDOWN_ITEMS.Rows.Count} DT_DOCRESULT_DROPDOWN_ITEMS!") - DT_RESULTLIST_OPTIONS = ClassHelper.FILTER_DATATABLE(CURRENT_VARIABLE_CONTROLS, "ENTITY_ID = " & oEntityID, "") - expression = String.Format("ENTITY_ID = {0} AND LANGUAGE = '{1}' AND COLUMN_VIEW LIKE 'VALUE%'", oEntityID, USER_LANGUAGE) + DT_RESULTLIST_OPTIONS = ClassHelper.FILTER_DATATABLE(CURRENT_VARIABLE_CONTROLS, "ENTITY_ID = " & _EntityId, "") + expression = String.Format("ENTITY_ID = {0} AND LANGUAGE = '{1}' AND COLUMN_VIEW LIKE 'VALUE%'", _EntityId, USER_LANGUAGE) DT_RESULTLIST_VARIABLE_VALUE = ClassHelper.FILTER_DATATABLE(DT_DOCSEARCH_RESULTLIST_CONFIG, expression, "SEQUENCE") Dim ENTITY_ROW = (From form In DT_ENTITY_DATA.AsEnumerable() Select form - Where form.Item("GUID") = oEntityID).Single() + Where form.Item("GUID") = _EntityId).Single() 'sql = String.Format("select * from TBPMO_RIGHT_USER WHERE USER_ID = {0} AND oEntityID = {1}", USER_GUID, oEntityID) - DT_RIGHTS_USER = ClassHelper.FILTER_DATATABLE(CURRENT_TBPMO_RIGHT_USER, "ENTITY_ID = " & oEntityID, "") + DT_RIGHTS_USER = ClassHelper.FILTER_DATATABLE(CURRENT_TBPMO_RIGHT_USER, "ENTITY_ID = " & _EntityId, "") expression = String.Format("") - sql = String.Format("SELECT DISTINCT EDIT_REC,ADD_REC,DELETE_REC,ADD_DOC,VIEW_DOC,DELETE_DOC FROM TBPMO_RIGHT_GROUP WHERE ENTITY_ID = {0} AND GROUP_ID IN (SELECT GROUP_ID FROM TBDD_GROUPS_USER WHERE USER_ID = {1})", oEntityID, USER_GUID) + sql = String.Format("SELECT DISTINCT EDIT_REC,ADD_REC,DELETE_REC,ADD_DOC,VIEW_DOC,DELETE_DOC FROM TBPMO_RIGHT_GROUP WHERE ENTITY_ID = {0} AND GROUP_ID IN (SELECT GROUP_ID FROM TBDD_GROUPS_USER WHERE USER_ID = {1})", _EntityId, USER_GUID) DT_RIGHTS_GROUP = MYDB_ECM.GetDatatable(sql) - sql = String.Format("SELECT VIEW_ID FROM TBPMO_USER_CONSTR_VIEW_TYPE WHERE CONSTRUCTOR_DETAIL_ID = {0} AND [ENTITY_ID] = {1} AND USER_ID = {2}", CURRENT_CONSTRUCTOR_DETAIL_ID, oEntityID, USER_GUID) + sql = String.Format("SELECT VIEW_ID FROM TBPMO_USER_CONSTR_VIEW_TYPE WHERE CONSTRUCTOR_DETAIL_ID = {0} AND [ENTITY_ID] = {1} AND USER_ID = {2}", CURRENT_CONSTRUCTOR_DETAIL_ID, _EntityId, USER_GUID) SELECTED_NODE_RECORD_ID = 0 @@ -617,26 +645,26 @@ Public Class frmNodeNavigation ' LINQ für Zugriff auf DT_VWPMO_CONSTRUCTOR_FORMS Dim result1 = (From form In DT_VWPMO_CONSTRUCTOR_FORMS.AsEnumerable() Select form - Where form.Item("FORM_ID") = oEntityID).Single() + Where form.Item("FORM_ID") = _EntityId).Single() CURRENT_PARENT_ENTITY_ID = 0 ' LINQ für Zugriff auf DT_VWPMO_CONSTRUCTOR_FORMS Dim query = From form In DT_VWPMO_CONSTRUCTOR_FORMS.AsEnumerable() Select form - Where form.Item("FORM_ID") = oEntityID + Where form.Item("FORM_ID") = _EntityId Dim QuickViewSQL = query.Single().Item("SQL_QUICK_VIEW") - CURRENT_ENTITYSQL = Get_Grid_Sql_NODE_NAV(CONSTRUCTORID, oEntityID, CURRENT_CONSTRUCTOR_DETAIL_ID, USER_GUID) + CURRENT_ENTITYSQL = Get_Grid_Sql_NODE_NAV(CONSTRUCTORID, _EntityId, CURRENT_CONSTRUCTOR_DETAIL_ID, USER_GUID) ' CURRENT_ENTITYSQL = GridSQL 'Anzahl der Datensätze - ENTITY_RECORD_COUNT = MYDB_ECM.GetScalarValue("SELECT COUNT(*) FROM TBPMO_RECORD where PARENT_RECORD = 0 AND FORM_ID = " & oEntityID) + ENTITY_RECORD_COUNT = MYDB_ECM.GetScalarValue("SELECT COUNT(*) FROM TBPMO_RECORD where PARENT_RECORD = 0 AND FORM_ID = " & _EntityId) - ClassDOC_SEARCH.Get_DOC_RESULTTABLE(DT_RESULTLIST_OPTIONS, DT_RESULTLIST_VARIABLE_VALUE, DT_COLUMNS_GRID_ENTITY, oEntityID, SELECTED_NODE_RECORD_ID, True, True) + ClassDOC_SEARCH.Get_DOC_RESULTTABLE(DT_RESULTLIST_OPTIONS, DT_RESULTLIST_VARIABLE_VALUE, DT_COLUMNS_GRID_ENTITY, _EntityId, SELECTED_NODE_RECORD_ID, True, True) - DT_TBPMO_FORM_VIEW = ClassHelper.FILTER_DATATABLE(CURRENT_TBPMO_FORM_VIEW, "FORM_ID = " & oEntityID & " AND SCREEN_ID = " & CURRENT_SCREEN_ID, "") + DT_TBPMO_FORM_VIEW = ClassHelper.FILTER_DATATABLE(CURRENT_TBPMO_FORM_VIEW, "FORM_ID = " & _EntityId & " AND SCREEN_ID = " & CURRENT_SCREEN_ID, "") CURRENT_ENTITYSTRING = DT_TBPMO_FORM_VIEW.Rows(0).Item("FORM_TITLE") FORMVIEW_ID = DT_TBPMO_FORM_VIEW.Rows(0).Item("GUID") @@ -658,10 +686,10 @@ Public Class frmNodeNavigation If IsNothing(CURRENT_DT_ENTITY_RECORDS) Then ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in getting Entity-Data - Check logfile") Else - CURRENT_DT_ENTITY_RECORDS.TableName = "VWPMO_ENTITY_TABLE" & oEntityID + CURRENT_DT_ENTITY_RECORDS.TableName = "VWPMO_ENTITY_TABLE" & _EntityId ' Dim SQL_AutoValues = "SELECT GUID AS CONTROL_ID, CONNECTION_ID_1 AS CONNECTION_ID, SQL_COMMAND_1 AS SQL_COMMAND FROM TBPMO_CONTROL WHERE CONNECTION_ID_1 <> '' AND SQL_COMMAND_1 <> '' AND FORM_ID = " & oEntityID - Dim DT_AUTOVALUES = ClassHelper.FILTER_DATATABLE(CURRENT_TBPMO_CONTROL, "CONNECTION_ID_1 > 0 AND SQL_COMMAND_1 <> '' AND FORM_ID = " & oEntityID, "") + Dim DT_AUTOVALUES = ClassHelper.FILTER_DATATABLE(CURRENT_TBPMO_CONTROL, "CONNECTION_ID_1 > 0 AND SQL_COMMAND_1 <> '' AND FORM_ID = " & _EntityId, "") CURRENT_SQL_AUTO_VALUES_DT = DT_AUTOVALUES @@ -684,7 +712,7 @@ Public Class frmNodeNavigation CtrlBuilder.WatchRecordChanges = False - ClassControlValues.LoadControlValuesList(oEntityID, CtrlBuilder.MasterPanel.Controls) + ClassControlValues.LoadControlValuesList(_EntityId, CtrlBuilder.MasterPanel.Controls) CtrlBuilder.WatchRecordChanges = True 'Zurücksetzen @@ -754,7 +782,7 @@ Public Class frmNodeNavigation LOGGER.Debug("Show_Selected_Record_Data: " & Rec_ID.ToString) Dim ENTITY_ROW = (From form In DT_ENTITY_DATA.AsEnumerable() Select form - Where form.Item("GUID") = oEntityID).Single() + Where form.Item("GUID") = _EntityId).Single() 'Update_Status_Label(False, "") LOGGER.Debug("RECORD ID: " & Rec_ID.ToString) @@ -770,7 +798,7 @@ Public Class frmNodeNavigation ENTITY_RELOAD_AFT_CONTROL_LOAD = False CtrlBuilder.WatchRecordChanges = False If pnlControls.Enabled = False Then pnlControls.Enabled = True - ClassControlValues.LoadControlValues(SELECTED_NODE_RECORD_ID, 0, oEntityID, CtrlBuilder.AllControls, oEntityID) + ClassControlValues.LoadControlValues(SELECTED_NODE_RECORD_ID, 0, _EntityId, CtrlBuilder.AllControls, _EntityId) CtrlBuilder.WatchRecordChanges = True Dim sw As New SW("Show Selected RecordData 2") @@ -799,14 +827,14 @@ Public Class frmNodeNavigation Sub Load_Controls(frmview_id As Integer) Dim sw As New SW("Load_Controls") FORMVIEW_ID = frmview_id - oEntityID = DT_TBPMO_FORM_VIEW.Rows(0).Item("FORM_ID") - CURRENT_ENTITY_ID = oEntityID + _EntityId = DT_TBPMO_FORM_VIEW.Rows(0).Item("FORM_ID") + CURRENT_ENTITY_ID = _EntityId CtrlBuilder = New ClassControlBuilder(pnlControls) CtrlCommandUI = New ClassControlCommandsUI(CtrlBuilder, ContextMenuDetails, AddressOf NewEditAppointment) - CtrlCommandUI.LoadControls(oEntityID) + CtrlCommandUI.LoadControls(_EntityId) Lock_RecordControls(True) AddHandler CtrlBuilder.OnRecordChanged, AddressOf OnRecordChanged @@ -929,7 +957,7 @@ Public Class frmNodeNavigation Sub NewEditAppointment(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Try Dim ctrl As Windows.Forms.Control = sender - ClassFunctionCommandsUI.NewEditAppointment(ctrl.Name, oEntityID, SELECTED_NODE_RECORD_ID, pnlControls.Controls) + ClassFunctionCommandsUI.NewEditAppointment(ctrl.Name, _EntityId, SELECTED_NODE_RECORD_ID, pnlControls.Controls) Catch ex As Exception ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", ex.Message, ex.StackTrace) End Try @@ -996,14 +1024,14 @@ Public Class frmNodeNavigation ' sodass die datasource für die angehakten werte existiert (checked list box) CtrlBuilder.WatchRecordChanges = False - ClassControlValues.LoadControlValuesListWithPlaceholders(CURRENT_ENTITY_ID, CURRENT_RECORD_ID, 0, CtrlBuilder.AllControls, oEntityID) + ClassControlValues.LoadControlValuesListWithPlaceholders(CURRENT_ENTITY_ID, CURRENT_RECORD_ID, 0, CtrlBuilder.AllControls, _EntityId) CtrlBuilder.WatchRecordChanges = True If CURRENT_RECORD_ID > 0 Then Await Show_Selected_Record_Data(CURRENT_RECORD_ID) End If - ClassRightManagement.Check_Set_Rights(CURRENT_RECORD_ID, oEntityID) + ClassRightManagement.Check_Set_Rights(CURRENT_RECORD_ID, _EntityId) CONTROL_HANDLING() @@ -1165,7 +1193,7 @@ Public Class frmNodeNavigation ' Abhängige Listen laden CtrlBuilder.WatchRecordChanges = False 'ClassControlValues.LoadControlValuesListWithPlaceholders(ENTITY_ID, RECORD_ID, PARENT_ID, CtrlBuilder.AllControls, ENTITY_ID) - ClassControlValues.Enable_Depending_Controls(oEntityID, SELECTED_NODE_RECORD_ID, 0, CtrlBuilder.AllControls, oEntityID) + ClassControlValues.Enable_Depending_Controls(_EntityId, SELECTED_NODE_RECORD_ID, 0, CtrlBuilder.AllControls, _EntityId) CtrlBuilder.WatchRecordChanges = True RECORD_ENABLED = True @@ -1208,7 +1236,7 @@ Public Class frmNodeNavigation 'ActivateAllTabs() End If If RECORD_ENABLED = True Then - ClassControlValues.UnloadControlValuesList(SELECTED_NODE_RECORD_ID, oEntityID, CtrlBuilder.AllControls) + ClassControlValues.UnloadControlValuesList(SELECTED_NODE_RECORD_ID, _EntityId, CtrlBuilder.AllControls) End If If Not IsNothing(CtrlCommandUI) Then 'If CtrlCommandUI.IsInsert Then @@ -1304,7 +1332,7 @@ Public Class frmNodeNavigation Public Sub TrySave_DoSave() ERROR_WHILE_SAVING = False ' Record Speichern - Dim ResultMessage = CtrlCommandUI.SaveRecord(SELECTED_NODE_RECORD_ID, oEntityID) + Dim ResultMessage = CtrlCommandUI.SaveRecord(SELECTED_NODE_RECORD_ID, _EntityId) If ResultMessage <> "ERROR" Then ' Status anzeigen Update_Status_Label(True, ResultMessage) @@ -1397,12 +1425,12 @@ Public Class frmNodeNavigation #End Region Private Sub Customer_Run_Procedures() Try - Dim DT As DataTable = MYDB_ECM.GetDatatable("SELECT * FROM TBPMO_RUN_PROCEDURES WHERE FORM_ID = " & oEntityID) + Dim DT As DataTable = MYDB_ECM.GetDatatable("SELECT * FROM TBPMO_RUN_PROCEDURES WHERE FORM_ID = " & _EntityId) If Not DT Is Nothing Then For Each row As DataRow In DT.Rows Dim prsql As String = row.Item("EXECUTE_COMMAND") - prsql = prsql.ToUpper.Replace("@FORM_ID", oEntityID) - prsql = prsql.ToUpper.Replace("@ENTITY_ID", oEntityID) + prsql = prsql.ToUpper.Replace("@FORM_ID", _EntityId) + prsql = prsql.ToUpper.Replace("@ENTITY_ID", _EntityId) prsql = prsql.ToUpper.Replace("@RECORD_ID", SELECTED_NODE_RECORD_ID) MYDB_ECM.ExecuteNonQuery(prsql) Next @@ -1439,7 +1467,7 @@ Public Class frmNodeNavigation End If Dim DT_RESULT As DataTable - DT_RESULT = ClassDOC_SEARCH.Get_DOC_RESULTTABLE(DT_RESULTLIST_OPTIONS, DT_RESULTLIST_VARIABLE_VALUE, DT_COLUMNS_GRID_ENTITY, oEntityID, SELECTED_NODE_RECORD_ID, True) + DT_RESULT = ClassDOC_SEARCH.Get_DOC_RESULTTABLE(DT_RESULTLIST_OPTIONS, DT_RESULTLIST_VARIABLE_VALUE, DT_COLUMNS_GRID_ENTITY, _EntityId, SELECTED_NODE_RECORD_ID, True) If IsNothing(DT_RESULT) Then Dim msg = "wrong DocSearch-Configuration or unexpected Error in Get_DOC_RESULTTABLE - Check logfile and contact Digital Data" @@ -1569,7 +1597,7 @@ Public Class frmNodeNavigation Private Sub RUN_ENTITY_DOC_SEARCH() Dim sw As New SW("RUN_ENTITY_DOC_SEARCH") Try - Dim oSQL = $"SELECT ENTITY_DOC_SEARCH FROM TBPMO_FORM WHERE GUID = {oEntityID}" + Dim oSQL = $"SELECT ENTITY_DOC_SEARCH FROM TBPMO_FORM WHERE GUID = {_EntityId}" CURRENT_DOCSEARCH_SQL = MYDB_ECM.GetScalarValue(oSQL) If CURRENT_DOCSEARCH_SQL <> String.Empty Then Dim oText = $"Die Entität-weite Suche wird im Hintergrund ausgeführt und in einem separaten Fenster angezeigt sobald sie fertig ist." @@ -1579,7 +1607,7 @@ Public Class frmNodeNavigation MsgBox(oText, vbOKOnly, "Information") - CURRENT_DOCSEARCH_SQL = CURRENT_DOCSEARCH_SQL.Replace("@ENTITY_ID", oEntityID) + CURRENT_DOCSEARCH_SQL = CURRENT_DOCSEARCH_SQL.Replace("@ENTITY_ID", _EntityId) CURRENT_DOCSEARCH_SQL = CURRENT_DOCSEARCH_SQL.Replace("@USER_LANGUAGE", USER_LANGUAGE) CURRENT_DOCSEARCH_SQL = CURRENT_DOCSEARCH_SQL.Replace("@USER_ECM_ID", USERID_FK_INT_ECM) CURRENT_DOCSEARCH_SQL = CURRENT_DOCSEARCH_SQL.Replace("@USER_ID", USER_GUID) @@ -1821,7 +1849,7 @@ Public Class frmNodeNavigation End Sub Private Function Get_DocGrid_Layout_Filename() Dim EntityRegex As New RegularExpressions.Regex("\s+\(\d+\)") - Dim Filename As String = String.Format("GridViewDoc_Search_{0}_{1}_UserLayout.xml", "Entity" & oEntityID, CONSTRUCTOR_DETAIL_ID) + Dim Filename As String = String.Format("GridViewDoc_Search_{0}_{1}_UserLayout.xml", "Entity" & _EntityId, CONSTRUCTOR_DETAIL_ID) LAYOUT_DOC_GRIDVIEW = System.IO.Path.Combine(Application.UserAppDataPath(), Filename) Return LAYOUT_DOC_GRIDVIEW End Function @@ -1862,7 +1890,7 @@ Public Class frmNodeNavigation End Sub #Region "Dropping Files" Sub Drag_Enter(e As DragEventArgs) - If oEntityID <> 0 Then + If _EntityId <> 0 Then ClassDragDrop.Drag_enter(e) Else Update_Status_Label(True, "No entity selected", EditState.Insert) @@ -1881,7 +1909,7 @@ Public Class frmNodeNavigation ClassHelper.MSGBOX_Handler("INFO", "Attention", "Check Your windream-connection and restart ADDI afterwards.", "Could not create a windream session!") Exit Function End If - If oEntityID <> 0 And (RIGHT_READ_ONLY_DOC = False And GridControlDocSearch.ContextMenuStrip.Name = "ContextMenuStripResultFiles") Or RIGHT_ADD_DOC = True Then + If _EntityId <> 0 And (RIGHT_READ_ONLY_DOC = False And GridControlDocSearch.ContextMenuStrip.Name = "ContextMenuStripResultFiles") Or RIGHT_ADD_DOC = True Then Dim sql = "select count(*) from VWPMO_DOKUMENTTYPES where FORMVIEW_ID = " & FORMVIEW_ID Dim count_DT = MYDB_ECM.GetScalarValue(sql) If count_DT = 0 And CURRENT_ENTITY_REDUNDANT_ID = 0 Then @@ -2201,7 +2229,7 @@ Public Class frmNodeNavigation Dim oSelectedDocument = oSelectedDocs.First Dim Result = ClassDOC_SEARCH.Get_File_Rights(oSelectedDocument.DocId) If Not IsNothing(Result) Then - ROW_READ_ONLY = False + _RowReadOnly = False Select Case Result.ToString Case "R" ContextMenu_Read() @@ -2215,7 +2243,7 @@ Public Class frmNodeNavigation Else LOGGER.Warn("FileRight is '' but User is Admin!! - Check the configuration!") End If - ROW_READ_ONLY = True + _RowReadOnly = True End Select CURRENT_FILE_RIGHT = Result.ToString Else @@ -2223,7 +2251,7 @@ Public Class frmNodeNavigation ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in Getting rights - check the log") e.Cancel = True End If - If ROW_READ_ONLY = False Then + If _RowReadOnly = False Then If RIGHT_READ_ONLY_DOC = True Then If USER_IS_ADMIN = False Then ContextMenu_Read() @@ -2510,8 +2538,8 @@ Public Class frmNodeNavigation End Sub Private Sub frmNodeNavigation_Click(sender As Object, e As EventArgs) Handles MyBase.Click - If CURRENT_ENTITY_ID <> oEntityID Then - CURRENT_ENTITY_ID = oEntityID + If CURRENT_ENTITY_ID <> _EntityId Then + CURRENT_ENTITY_ID = _EntityId CURRENT_RECORD_ID = 0 End If End Sub @@ -2698,15 +2726,15 @@ Public Class frmNodeNavigation RUN_ENTITY_DOC_SEARCH() End Sub - Private Sub bbtnitmReloadView_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bbtnitmReloadView.ItemClick - ReloadTreeView() - End Sub - Sub ReloadTreeView() + Private Async Function bbtnitmReloadView_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) As Task Handles bbtnitmReloadView.ItemClick + Await ReloadTreeView() + End Function + Async Function ReloadTreeView() As Task TreeListDevexpress.Nodes.Clear() - Load_nodes() - End Sub + Await Load_nodes() + End Function - Private Sub UnterknotenNeuOrdnenToolStripMenuItem_Click(sender As Object, e As EventArgs) + Private Async Function UnterknotenNeuOrdnenToolStripMenuItem_Click(sender As Object, e As EventArgs) As Task MyTreeListViewState = New ClassTreeListViewState(TreeListDevexpress) Dim oQuestion = "Wollen Sie die gesamte Struktur unterhalb dieses Knotens neu ordnen lassen?" & vbNewLine & "Nein, wenn nur die direkten Unterknoten neu geordnet werden sollen!" If USER_LANGUAGE <> "de-DE" Then @@ -2718,7 +2746,7 @@ Public Class frmNodeNavigation If result = MsgBoxResult.Yes Then oSubnodes = "1" ElseIf result = MsgBoxResult.Cancel Then - Exit Sub + Exit Function End If Cursor = Cursors.WaitCursor Dim oSQL = $"EXEC PRCUST_REORDER_CHILD_NODES " @@ -2733,7 +2761,7 @@ Public Class frmNodeNavigation oNodeGUID = oID oSQL += $" {oNodeGUID},{oSubnodes} " MYDB_ECM.ExecuteNonQuery(oSQL) - ReloadTreeView() + Await ReloadTreeView() MyTreeListViewState.LoadState() TreeListDevexpress.FocusedNode = FocusedNode @@ -2741,7 +2769,7 @@ Public Class frmNodeNavigation Cursor = Cursors.Default - End Sub + End Function 'Private Sub TreeListDevexpress_MouseUp(sender As Object, e As MouseEventArgs) Handles TreeListDevexpress.MouseUp ' Dim tree As TreeList = TryCast(sender, TreeList) @@ -2828,7 +2856,7 @@ Public Class frmNodeNavigation 'End If End Sub - Private Sub BarButtonItem2_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BbtnitmNodeReorder.ItemClick + Private Async Function BarButtonItem2_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) As Task Handles BbtnitmNodeReorder.ItemClick MyTreeListViewState = New ClassTreeListViewState(TreeListDevexpress) Dim oQuestion = "Wollen Sie die gesamte Struktur unterhalb dieses Knotens neu ordnen lassen?" & vbNewLine & "Nein, wenn nur die direkten Unterknoten neu geordnet werden sollen!" If USER_LANGUAGE <> "de-DE" Then @@ -2840,7 +2868,7 @@ Public Class frmNodeNavigation If result = MsgBoxResult.Yes Then oSubnodes = "1" ElseIf result = MsgBoxResult.Cancel Then - Exit Sub + Exit Function End If Cursor = Cursors.WaitCursor Dim oSQL = $"EXEC PRCUST_REORDER_CHILD_NODES " @@ -2855,14 +2883,14 @@ Public Class frmNodeNavigation oNodeGUID = oID oSQL += $" {oNodeGUID},{oSubnodes} " MYDB_ECM.ExecuteNonQuery(oSQL) - ReloadTreeView() + Await ReloadTreeView() MyTreeListViewState.LoadState() TreeListDevexpress.FocusedNode = FocusedNode Update_Status_Label(True, "Nodes reordered") End If Cursor = Cursors.Default - End Sub + End Function Private Sub bbtnItm_TV_Collape_Expand_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bbtnItm_TV_Collape_Expand.ItemClick If TV_Collapse_ExpandState = "Collapse" Then @@ -2893,4 +2921,28 @@ Public Class frmNodeNavigation DocumentViewer.CloseDocument() End If End Sub + + Private Async Sub btnCreateNewNode_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnCreateNewNode.ItemClick + Dim oForm As New frmNewNode() With { + .NodeConfigTypes = AvailableConfigNodes + } + + If oForm.ShowDialog() <> DialogResult.OK Then + Exit Sub + End If + + Dim oParentNodeGuid As Integer = FocusedNode.Item("GUID") + Dim oIsExpanded As Boolean = FocusedNode.Expanded + Dim oNodeCreator = New ClassNodeCreator(LOGCONFIG, ImageCollection1) + oNodeCreator.AddNode(_EntityId, oForm.Title, oParentNodeGuid, oForm.Id) + + Await ReloadTreeView() + + Dim oNode = TreeListDevexpress.FindNodeByFieldValue("GUID", oParentNodeGuid) + Dim oNodeIndex = TreeListDevexpress.MakeNodeVisible(oNode) + TreeListDevexpress.SetFocusedNode(oNode) + If oIsExpanded Then + oNode.Expand() + End If + End Sub End Class \ No newline at end of file diff --git a/app/DD-Record-Organizer/frmStructureNodeConfig.Designer.vb b/app/DD-Record-Organizer/frmStructureNodeConfig.Designer.vb index 19d8af1..54ae1e3 100644 --- a/app/DD-Record-Organizer/frmStructureNodeConfig.Designer.vb +++ b/app/DD-Record-Organizer/frmStructureNodeConfig.Designer.vb @@ -331,8 +331,9 @@ Partial Class frmStructureNodeConfig ' Me.TYPE_NODENumericUpDown.DataBindings.Add(New System.Windows.Forms.Binding("Value", Me.TBPMO_STRUCTURE_NODES_CONFIGURATIONBindingSource, "TYPE_NODE", True)) Me.TYPE_NODENumericUpDown.Location = New System.Drawing.Point(659, 153) + Me.TYPE_NODENumericUpDown.Maximum = New Decimal(New Integer() {1000, 0, 0, 0}) Me.TYPE_NODENumericUpDown.Name = "TYPE_NODENumericUpDown" - Me.TYPE_NODENumericUpDown.Size = New System.Drawing.Size(39, 22) + Me.TYPE_NODENumericUpDown.Size = New System.Drawing.Size(55, 22) Me.TYPE_NODENumericUpDown.TabIndex = 6 Me.TYPE_NODENumericUpDown.Value = New Decimal(New Integer() {1, 0, 0, 0}) ' diff --git a/app/DD-Record-Organizer/frmStructureNodeConfig.resx b/app/DD-Record-Organizer/frmStructureNodeConfig.resx index 0e231cb..57b9b93 100644 --- a/app/DD-Record-Organizer/frmStructureNodeConfig.resx +++ b/app/DD-Record-Organizer/frmStructureNodeConfig.resx @@ -154,7 +154,7 @@ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wgAADsIBFShKgAAAAUpJREFUOE9jGLzg7gL2/7fmcf6/Oofr/8UZvP+hwsSD60CNfx41/v/zsOH/yckC + wAAADsABataJCQAAAUpJREFUOE9jGLzg7gL2/7fmcf6/Oofr/8UZvP+hwsSD60CNfx41/v/zsOH/yckC pBtwfjov3ICDPSKkG3B8kiBQc93/Pw+q/u9oFydswKWZPP/PTuX7fxKo8Ui/0P993SJAzeX//94r+r++ Qeb/qhq5/0srFf/PL1X+P6tIFdPAU0B//nlYD9RUC8SV///cKwHivP9/72b+/3sn+f/f23H//92MAOKQ /5NyNDENONQrDHbu3/ulQI0FQI3ZQI2pQI0J///digZqDPv/70bQ/3/X/f53peliGrCzXeL/lmap/+vA @@ -172,7 +172,7 @@ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wgAADsIBFShKgAAAAW9JREFUOE+1kE0ow2Ecx3dV3krt4oJaOSCTvIRkMqSxyITIzCQHDouEdnFwIOVC + wAAADsABataJCQAAAW9JREFUOE+1kE0ow2Ecx3dV3krt4oJaOSCTvIRkMqSxyITIzCQHDouEdnFwIOVC DrhIDiQl5UTiNG/z2ppafy1S2gX/uDwfY6i1v7Hie3nqeb7fz+/7/FR/Ilwn0G0Exw4fV5GJlXlEZxXC rIet9bAQvB5Ymgn2sLYAvSZEux7RUQFzE4qQt4bCXAYjPaHvnDoCkLpsRGMB2JqCTGLIijDlwqQ9bEMV i9OIytR3EMNWcJ/BWH8A6j8/bOGFxwXNxYEvGbMQ9XnQ1/K78KfY3/VXzkMY0qFGG2H4RoLGQshJQNbG @@ -184,7 +184,7 @@ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wgAADsIBFShKgAAAASpJREFUOE9jGDygcNbz/00Lnv/PnPj4P1QIA4S3P8Apx5A789n/VUfe/8elKL77 + wAAADsABataJCQAAASpJREFUOE9jGDygcNbz/00Lnv/PnPj4P1QIA4S3P8Apx5A789n/VUfe/8elKL77 wf/ghmu4DciY8vT/wn0fsCqK73n4f+n+///9qy/gNiCh58n/aVveYyiKaL8P1pw56/9/r9ITuA2I7Hr0 v3f1BxRFoa33wJpb1wFt7/z73yX/AG4DApsf/q+b/w6uKLjl7v9Fe///7wBqzpjz879d3c//9hnbcRvg UXX/f/60NyiK7Ipv/0+f8/u/f9e3/zqF7/5bJKzHbYB96d3/2ZNfYyjSTzn/36ToxX+VrE//jSOX4TbA @@ -195,7 +195,7 @@ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wgAADsIBFShKgAAAALZJREFUOE9jGDogvP3BfyiTdBDf/eB/cMM18gyI73n4f+n+///9qy+QbkBE+32w + wAAADsABataJCQAAALZJREFUOE9jGDogvP3BfyiTdBDf/eB/cMM18gyI73n4f+n+///9qy+QbkBE+32w 5sxZ//97lZ4gzYDQ1ntgza3rgLZ3/v3vkn+AeAOCW+7+X7T3//8OoOaMOT//29X9/G+fsZ00F9gV3/6f Puf3f/+ub/91Ct/9t0hYT3oY6Kec/29S9OK/Stan/8aRy0g3AAQMkk78l037+l83eB55BoCAfurl/xq+ 08g3AARUPCZQZsBgBQwMANAUYJgEulBVAAAAAElFTkSuQmCC @@ -204,7 +204,7 @@ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wgAADsIBFShKgAAAAKNJREFUOE9jGHygcNbz/1AmeSB35rP/Cd33yDckY8rT//P2//6f0HWHPEMSep78 + wAAADsABataJCQAAAKNJREFUOE9jGHygcNbz/1AmeSB35rP/Cd33yDckY8rT//P2//6f0HWHPEMSep78 n73v1//OrX//u5VeJt2QyK5H/6ds+/W/ZOnf/wnT//63yT1LmiGBzQ//t659D9ZsXPLlv3T0tf/GkcuI N8Sj6v7/krnv4JoVXXpIc4F96d3/gS3PyNMMAhZ5d/7bFFwhTzMIGGbdJl8zCOik3SBf81AEDAwAoH5f oAc0QjgAAAAASUVORK5CYII= @@ -213,7 +213,7 @@ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wgAADsIBFShKgAAAASxJREFUOE9jGFygcNbz/1AmBgDJNS14/j9z4mOcahhyZz77n9B9D6sCkNyqI+// + wAAADsABataJCQAAASxJREFUOE9jGFygcNbz/1AmBgDJNS14/j9z4mOcahhyZz77n9B9D6sCkNyqI+// h7c/wG1AxpSn/+ft//0/oesOhiKQ3MJ9H/4HN1zDbUBCz5P/s/f9+t+59e9/t9LLKApBctO2vP/vX30B twGRXY/+T9n263/J0r//E6b//W+TexauGCTXu/rDf6/SE7gNCGx++L917XuwZuOSL/+lo6/9N45cBtYA kqub/+6/S/4B3AZ4VN3/XzL3HVyzoksPXDFILn/am//2GdtxG2Bfevd/YMszDM0gAJLLnvz6v0XCetwG @@ -224,7 +224,7 @@ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wgAADsIBFShKgAAAAExJREFUOE9joAr49u3bf1IxVCsEgAWC58Dxh/cf4RhZDETHTNiHaQgpBoAwzBCo + wAAADsABataJCQAAAExJREFUOE9joAr49u3bf1IxVCsEgAWC58Dxh/cf4RhZDETHTNiHaQgpBoAwzBCo dtINAGGiDUDGyGpoawAxeNSAQWkAORiqnRLAwAAA9EMMU8Daa3MAAAAASUVORK5CYII= diff --git a/app/DD-Record-Organizer/frmStructureNodeConfig.vb b/app/DD-Record-Organizer/frmStructureNodeConfig.vb index b13a7e5..f0c01e2 100644 --- a/app/DD-Record-Organizer/frmStructureNodeConfig.vb +++ b/app/DD-Record-Organizer/frmStructureNodeConfig.vb @@ -402,6 +402,11 @@ Private Sub frmStructureNodeConfig_Shown(sender As Object, e As EventArgs) Handles Me.Shown Load_Image() + + If cmbEntity.Items.Count > 0 Then + cmbEntity.SelectedIndex = 0 + LoadData() + End If End Sub Private Sub TreeView1_AfterSelect(sender As Object, e As TreeViewEventArgs) Handles TreeView1.AfterSelect @@ -420,12 +425,15 @@ End Sub Private Sub cmbEntity_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbEntity.SelectedIndexChanged + LoadData() + End Sub + + Private Sub LoadData() If cmbEntity.SelectedIndex <> -1 Then Me.TBPMO_STRUCTURE_NODES_CONFIGURATIONTableAdapter.Fill(Me.DD_DMSDataSet.TBPMO_STRUCTURE_NODES_CONFIGURATION, cmbEntity.SelectedValue) If DD_DMSDataSet.TBPMO_STRUCTURE_NODES_CONFIGURATION.Rows.Count > 0 Then Load_TreeView() End If - End If End Sub