Imports System Imports System.Data Imports System.Data.SqlTypes Imports System.Data.SqlClient Namespace TKB.VV.Sysadmin Public Class clsMySysadminfunkion Inherits TKB.VV.DB.clsSysadminfunktion Public treedata_for_search As New DataTable Dim FoundNode As Integer = 0 Dim Searchstring As String = "" Public Treesearch As New TreeView #Region "Select Hierarchy" Public Function SelectHierarchy() As DataTable Dim scmCmdToExecute As SqlCommand = New SqlCommand() 'scmCmdToExecute.CommandText = "dbo.[sp_sysadminfunktion_hierarchie]" scmCmdToExecute.CommandText = "dbo.[sp_get_sysadmin_tree]" scmCmdToExecute.CommandType = CommandType.StoredProcedure Dim dtToReturn As DataTable = New DataTable("sysadminfunktion") Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute) ' // Use base class' connection object scmCmdToExecute.Connection = m_scoMainConnection Try scmCmdToExecute.Parameters.Add(New SqlParameter("@imitarbeiternr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Globals.clsmitarbeiter.iMitarbeiternr.Value)) scmCmdToExecute.Parameters.Add(New SqlParameter("@iroot", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 0)) scmCmdToExecute.Parameters.Add(New SqlParameter("@isprache", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 1)) scmCmdToExecute.Parameters.Add(New SqlParameter("@imandant", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Globals.clsmitarbeiter.iMandantnr.Value)) scmCmdToExecute.Parameters.Add(New SqlParameter("@iErrorCode", SqlDbType.Int, 4, ParameterDirection.Output, True, 10, 0, "", DataRowVersion.Proposed, m_iErrorCode)) If m_bMainConnectionIsCreatedLocal Then ' // Open connection. m_scoMainConnection.Open() Else If m_cpMainConnectionProvider.bIsTransactionPending Then scmCmdToExecute.Transaction = m_cpMainConnectionProvider.stCurrentTransaction End If End If ' // Execute query. sdaAdapter.Fill(dtToReturn) m_iErrorCode = New SqlInt32(CType(scmCmdToExecute.Parameters.Item("@iErrorCode").Value, SqlInt32)) If Not m_iErrorCode.Equals(New SqlInt32(TKB.VV.DB.LLBLError.AllOk)) Then ' // Throw error. Throw New Exception("Stored Procedure 'pr_sysadminfunktion_SelectAll' reported the ErrorCode: " & m_iErrorCode.ToString()) End If Return dtToReturn Catch ex As Exception ' // some error occured. Bubble it to caller and encapsulate Exception object Throw New Exception("clsSysadminfunktion::SelectAll::Error occured." + ex.Message, ex) Finally If m_bMainConnectionIsCreatedLocal Then ' // Close connection. m_scoMainConnection.Close() End If scmCmdToExecute.Dispose() sdaAdapter.Dispose() End Try End Function #End Region #Region "LoadTreeMenu" Public Sub LoadTreeMenu(ByVal otv As TreeView) Dim menueintraege As New clsMySysadminfunkion() Dim menudata As DataTable Dim i As Integer Dim m_collDeletedNodes As Collection Dim collNodeKeys As New Collection() Dim tnNew As TreeNode Dim tnParent As TreeNode m_collDeletedNodes = Nothing m_collDeletedNodes = New Collection() menueintraege.cpMainConnectionProvider = conn menudata = menueintraege.SelectHierarchy For i = 0 To menudata.Rows.Count - 1 If menudata.Rows(i).Item("ParentID") = 0 Then tnNew = otv.Nodes.Add(menudata.Rows(i).Item("bezeichnung")) With tnNew .Tag() = menudata.Rows(i).Item("sysadminfnktnr") .ImageIndex() = menudata.Rows(i).Item("ImageIndex") .SelectedImageIndex() = menudata.Rows(i).Item("ImageIndexOpen") End With Try collNodeKeys.Add(tnNew, CType(menudata.Rows(i).Item("sysadminfnktnr"), String)) Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.Critical) End Try Else Try tnParent = CType(collNodeKeys.Item(CType(menudata.Rows(i).Item("ParentID"), String)), TreeNode) tnNew = tnParent.Nodes.Add(CType(menudata.Rows(i).Item("bezeichnung"), String)) With tnNew .Tag() = CType(menudata.Rows(i).Item("sysadminfnktnr"), String) .ImageIndex() = menudata.Rows(i).Item("ImageIndex") .SelectedImageIndex() = menudata.Rows(i).Item("ImageIndexOpen") End With collNodeKeys.Add(tnNew, CType(menudata.Rows(i).Item("sysadminfnktnr"), String)) Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.Critical) End Try End If Next If treedata_for_search.Rows.Count < 1 Then For Each c As DataColumn In menudata.Columns If c.ColumnName = "ErweiterteSuche" Then Dim dc As New DataColumn dc.ColumnName = "ErweiterteSuche" dc.DataType = System.Type.GetType("System.String") dc.DefaultValue = " " Me.treedata_for_search.Columns.Add(dc) Else Me.treedata_for_search.Columns.Add(c.ColumnName) End If Next End If For Each row As DataRow In menudata.Rows Me.treedata_for_search.ImportRow(row) Next End Sub #End Region #Region "Suche" Public Function Init_Search() FoundNode = 0 Searchstring = "" Me.Treesearch.Nodes.Clear() End Function Public Function SearchNode(ByRef tree As TreeView, ByVal SearchString As String) As TreeNode Me.Treesearch.Nodes.Clear() For Each dr As DataRow In treedata_for_search.Rows If InStr(UCase(dr.Item("Bezeichnung")), UCase(SearchString)) > 0 Then Dim tn As New TreeNode tn = Me.Treesearch.Nodes.Add(dr.Item("Bezeichnung")) tn.Tag = dr.Item("sysadminfnktnr") End If Next Return FindFirst(tree) End Function Public Function FindFirst(ByRef Tree As TreeView) As TreeNode Try If Me.Treesearch.Nodes.Count > 0 Then Me.Treesearch.SelectedNode = Me.Treesearch.Nodes(0) Return FindNode(Tree.Nodes, Treesearch.SelectedNode.Tag, "") Catch End Try End Function Public Function FindNextNode(ByRef tree As TreeView) As TreeNode Try Treesearch.SelectedNode = Treesearch.SelectedNode.NextNode If Treesearch.SelectedNode Is Nothing Then Return FindFirst(tree) End If Return Me.FindNode(tree.Nodes, Treesearch.SelectedNode.Tag, "") Catch ex As Exception End Try End Function Public Function FindPrevNode(ByRef tree As TreeView) As TreeNode Try Treesearch.SelectedNode = Treesearch.SelectedNode.PrevNode If Treesearch.SelectedNode Is Nothing Then Return FindLastNode(tree) End If Return Me.FindNode(tree.Nodes, Treesearch.SelectedNode.Tag, "") Catch ex As Exception End Try End Function Public Function FindLastNode(ByRef tree As TreeView) As TreeNode Try Treesearch.SelectedNode = Treesearch.Nodes(Treesearch.Nodes.Count - 1) Return Me.FindNode(tree.Nodes, Treesearch.SelectedNode.Tag, "") Catch ex As Exception End Try End Function Public Function FindNode(ByVal _nodeCollection As TreeNodeCollection, ByVal SearchVal As Integer, ByVal SearchString As String) As TreeNode Dim tmpNode As TreeNode For Each _child As TreeNode In _nodeCollection If _child.Tag = SearchVal Then Return _child End If ' If InStr(UCase(_child.Text), UCase(SearchString)) > 0 Then ' Return _child ' End If tmpNode = FindNode(_child.Nodes, SearchVal, SearchString) If Not tmpNode Is Nothing Then Return tmpNode End If Next Return Nothing End Function #End Region End Class End Namespace