RecordOrganizer/app/DD-Record-Organizer/frmNodeNavigation.vb

130 lines
5.2 KiB
VB.net

Imports DevExpress.XtraTreeList
Imports DevExpress.XtraTreeList.Columns
Imports DevExpress.XtraTreeList.Nodes.Operations
Imports DevExpress.XtraTreeList.Nodes
Imports DevExpress.XtraSplashScreen
Imports System.Threading
Public Class frmNodeNavigation
Dim DTNODES As DataTable
Private RunningTask As Task
Private RunningTaskTokenSource As New CancellationTokenSource
Private RunningTaskToken = RunningTaskTokenSource.Token
Private Sub frmNodeNavigation_Load(sender As Object, e As EventArgs) Handles Me.Load
Load_nodes()
End Sub
Async Function Load_nodes() As Threading.Tasks.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 from VWPMO_STRUCTURE_NODES T INNER JOIN VWPMO_CONSTRUCTOR_FORMS T1 ON T.ENTITY_ID = T1.FORM_ID WHERE T1.CONSTRUCT_ID = {0}", 1)
DTNODES = ClassDatabase.Return_Datatable(Sql, True)
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 T1.CONSTRUCT_ID = {0}", 1)
Dim DT_TREEVIEW_CONFIGURATION = ClassDatabase.Return_Datatable(Sql)
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"))
End If
Catch ex As Exception
End Try
Next
TreeListDevexpress.DataSource = DTNODES
TreeListDevexpress.KeyFieldName = "GUID"
TreeListDevexpress.ParentFieldName = "PARENT_GUID"
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
Catch ex As Exception
Finally
SplashScreenManager.CloseOverlayForm(oHandle)
End Try
End Function
Private Sub TreeListDevexpress_GetStateImage(sender As Object, e As DevExpress.XtraTreeList.GetStateImageEventArgs)
Dim Column_Config_ID As DevExpress.XtraTreeList.Columns.TreeListColumn = TreeListDevexpress.Columns("NODE_CONFIG_ID")
Dim configid = e.Node.GetDisplayText(Column_Config_ID)
e.Node.StateImageIndex = ImageCollection1.Images.Keys.IndexOf(configid)
End Sub
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()
If filteredColumns.Count = 0 Then
tree.CollapseAll()
Return
End If
tree.BeginUpdate()
For Each col As TreeListColumn In filteredColumns
Dim op As New CollapseChildrenOperation(col.FilterInfo.AutoFilterRowValue.ToString(), col)
tree.NodesIterator.DoOperation(op)
Next col
tree.EndUpdate()
End Sub
Public Class CollapseChildrenOperation
Inherits TreeListOperation
Private filterValue As String
Private column As TreeListColumn
Public Sub New(ByVal filter As String, ByVal col As TreeListColumn)
filterValue = filter
column = col
End Sub
Private Function IsNodeMatchFilter(ByVal node As TreeListNode, ByVal column As TreeListColumn) As Boolean
Return node.GetDisplayText(column).Contains(filterValue)
End Function
Public Overrides Sub Execute(ByVal node As TreeListNode)
If IsNodeMatchFilter(node, column) Then
node.TreeList.MakeNodeVisible(node)
CollapseChildren(node)
End If
End Sub
Public Sub CollapseChildren(ByVal node As TreeListNode)
'node.Visible = true;
For Each childNode As TreeListNode In node.Nodes
CollapseChildren(childNode)
Next childNode
node.Expanded = False
End Sub
End Class
Private Sub TreeListDevexpress_FocusedNodeChanged(sender As Object, e As FocusedNodeChangedEventArgs) Handles TreeListDevexpress.FocusedNodeChanged
For Each treeListNode As DevExpress.XtraTreeList.Nodes.TreeListNode In TreeListDevexpress.Selection
Dim oID = treeListNode.Id
Dim PID = treeListNode.ParentNode
Console.WriteLine(oID)
Next
End Sub
End Class