MS Diverse Verbesserungen beim laden , NOLOCK etc

This commit is contained in:
Developer01
2026-04-30 16:15:00 +02:00
parent 08c6a6c125
commit 11147ca0ff
20 changed files with 311 additions and 202 deletions

View File

@@ -199,11 +199,7 @@ Public Class frmNodeNavigation
' ✅ NEU: GridView Performance-Optimierung HIER initialisieren
ConfigureGridViewForPerformance()
If USER_IS_ADMIN Then
TreeListDevexpress.ContextMenuStrip = CMSAdmin_Treeview
Else
TreeListDevexpress.ContextMenuStrip = Nothing
End If
UpdateTreeviewContextMenuState()
' Hintergrund Bild initialisieren
'If (System.IO.File.Exists(Application.StartupPath + "\Resources\windream-portrait_col_RGB_Wordpress.png")) Then
@@ -431,9 +427,9 @@ Public Class frmNodeNavigation
$"ButtonVisible={btnCreateNewNode.Visibility}, HasAddRightForConfigNode={HasAddRightForConfigNode}, ConfigTableRows={If(IsNothing(DT_CONFIGURABLE_NODES), 0, DT_CONFIGURABLE_NODES.Rows.Count)}")
' NEUE zentrale Methode aufrufen statt direkter Manipulation
UpdateCreateNodeButtonState()
UpdateTreeviewContextMenuState()
' END NEW NODE
_NODE_ID = oGuid
@@ -487,8 +483,7 @@ Public Class frmNodeNavigation
CtrlBuilder.ControlsChanged.Clear()
Load_DocGrid_Layout()
'Load_Grid_Layout()
'Load_Variants_Grid_Layout()
'swAll.Done()
Node_AfterSelect = False
@@ -558,6 +553,45 @@ Public Class frmNodeNavigation
btnCreateNewNode.Enabled = False
End Try
End Sub
''' <summary>
''' Aktiviert das TreeView-Kontextmenü für Admins ODER wenn konfigurierbare Knoten vorhanden sind.
''' </summary>
Private Sub UpdateTreeviewContextMenuState()
Try
NNLogger.Debug($"UpdateTreeviewContextMenuState called - " &
$"USER_IS_ADMIN={USER_IS_ADMIN}, " &
$"ConfigTableExists={Not IsNothing(DT_CONFIGURABLE_NODES)}, " &
$"ConfigTableRows={If(IsNothing(DT_CONFIGURABLE_NODES), 0, DT_CONFIGURABLE_NODES.Rows.Count)}")
Dim shouldEnableContextMenu As Boolean = False
' ✅ Bedingung 1: Admin
' ✅ Bedingung 2: Konfigurierbare Knoten vorhanden UND Benutzer hat Add-Recht
If USER_IS_ADMIN Then
shouldEnableContextMenu = True
ElseIf Not IsNothing(DT_CONFIGURABLE_NODES) AndAlso
DT_CONFIGURABLE_NODES.Rows.Count > 0 AndAlso
(HasAddRightForConfigNode = True OrElse AvailableConfigNodes.Count > 0) Then
shouldEnableContextMenu = True
End If
' Thread-sicheres Update
If Me.InvokeRequired Then
Me.Invoke(Sub()
TreeListDevexpress.ContextMenuStrip = If(shouldEnableContextMenu, CMSTreeview, Nothing)
End Sub)
Else
TreeListDevexpress.ContextMenuStrip = If(shouldEnableContextMenu, CMSTreeview, Nothing)
End If
NNLogger.Debug($"TreeView ContextMenu = {If(shouldEnableContextMenu, "ENABLED", "DISABLED")}")
Catch ex As Exception
NNLogger.Error(ex)
' Im Fehlerfall: Sicherheitshalber deaktivieren
TreeListDevexpress.ContextMenuStrip = Nothing
End Try
End Sub
Public Async Function ShowDialogAsync() As Task(Of DialogResult)
Return Await Task.Run(Function()
Return MessageBox.Show("Der Parent-Node wird nun getauscht? Wollen Sie fortfahren?",
@@ -732,6 +766,8 @@ Public Class frmNodeNavigation
btnCreateNewNode.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
' Initial-State setzen
UpdateCreateNodeButtonState()
' ✅ NEU: Kontextmenü-Status initial setzen
UpdateTreeviewContextMenuState()
End If
End If
Catch ex As Exception
@@ -3675,6 +3711,13 @@ Public Class frmNodeNavigation
Dim oSuccess = oNodeCreator.AddNode(_ENTITY_ID, oForm.Title, oParentNodeGuid, oForm.Id, oCreateRecord)
If oSuccess = True Then
If oParentNodeGuid > 0 Then
Dim oSQL = $"EXEC PRCUST_REORDER_CHILD_NODES "
MyTreeListViewState.SaveState()
oSQL += $" {_NODE_ID},0 "
MYDB_ECM.ExecuteNonQuery(oSQL)
End If
Dim oMessage As String = "Der Knoten wurde erfolgreich angelegt! Wollen Sie die Sicht jetzt neu laden? Abhängig von der Anzahl der Knoten kann dies einige Sekunden dauern."
If MsgBox(oMessage, MsgBoxStyle.Question Or MsgBoxStyle.YesNo, Text) = MsgBoxResult.Yes Then
@@ -4068,4 +4111,13 @@ Public Class frmNodeNavigation
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Fehler beim Umbenennen des Knotens: ", ex.Message)
End Try
End Sub
Private Sub CMSTreeview_Opening(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles CMSTreeview.Opening
If USER_IS_ADMIN Then
KnotenUndDateienLöschenToolStripMenuItem.Visible = True
Else
KnotenUndDateienLöschenToolStripMenuItem.Visible = False
End If
End Sub
End Class