130 lines
5.2 KiB
VB.net
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 |