MS Diverse Verbesserungen beim laden , NOLOCK etc
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user