Files
BEA/BEA - Kopie/Übersicht/clsUebersicht.vb
2021-04-20 07:44:06 +02:00

252 lines
9.1 KiB
VB.net

Imports System.Data.SqlTypes
Imports System.Data.SqlClient
Public Class clsUebersicht
#Region "Deklarationen"
Dim treedata As New DataSet
Public treedata_for_search As New DataTable
Dim TreeaufbauSuche As Boolean = False
Dim TreeaufbauNr As Integer = 0
Dim FoundNode As Integer = 0
Dim Searchstring As String = ""
Public Treesearch As New TreeView
Dim Datenklasse As New _DataClass.DataClass
#End Region
#Region "Tree"
Public Sub Load_Treeview(ByRef tree As TreeView)
treedata.Tables.Clear()
TreeaufbauNr = -1
For Each dr As DataRow In Globals.Objekt.Rows
If dr.Item("Aktiv") = True Then
Load_Treedata(dr.Item("Bezeichnung"))
If Not (treedata Is Nothing) Then
Dim oView As DataView = treedata.Tables(0).DefaultView
Dim oTable As DataTable = oView.Table
Dim oDS As DataSet = New DataSet()
oDS.Tables.Add(oTable.Copy())
If oDS.Relations.Contains("SelfRefenceRelation") = False Then
oDS.Relations.Add("SelfRefenceRelation", _
oDS.Tables(0).Columns("id"), _
oDS.Tables(0).Columns("Parentid"))
End If
oTable.Dispose()
oTable = Nothing
LoadTreeView(oDS, tree)
oDS.Dispose()
oDS = Nothing
End If
End If
Next
End Sub
Public Function Load_Treedata(ByVal datatype As String) As DataTable
treedata.Tables.Clear()
Dim selectcommand As New SqlCommand
Dim connection As New SqlConnection()
Dim da As New SqlDataAdapter("", connection)
selectcommand.CommandText = "sp_get_struktur"
selectcommand.Parameters.Add("@Root", SqlDbType.VarChar)
selectcommand.Parameters(0).Value = Datatype
selectcommand.CommandType = CommandType.StoredProcedure
selectcommand.Connection = connection
Try
connection.ConnectionString = Globals.sConnectionString
connection.Open()
da.SelectCommand = selectcommand
da.Fill(treedata, "Tree")
If treedata_for_search.Rows.Count < 1 Then
For Each c As DataColumn In treedata.Tables(0).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 treedata.Tables(0).Rows
Me.treedata_for_search.ImportRow(row)
Next
Catch ex As Exception
MsgBox(ex.Message)
Finally
connection.Close()
da.Dispose()
selectcommand.Dispose()
End Try
End Function
''' <summary>
''' Tree aufbauen
''' </summary>
''' <param name="oDS"></param>
''' <param name="oTreeview"></param>
''' <remarks></remarks>
Private Sub LoadTreeView(ByVal oDS As DataSet, ByRef oTreeview As TreeView)
'Dim oTreeView As TreeView = New TreeView()
Dim oDataRow As DataRow
For Each oDataRow In oDS.Tables(0).Rows
If Not oDataRow.IsNull("Parentid") Then
If oDataRow.Item("Parentid") = 0 Then
'If oDataRow.IsNull("Parentid") Then
Dim oNode As New TreeNode()
oNode.Text = Trim(oDataRow("Bezeichnung").ToString())
Try
oNode.ToolTipText = Trim(oDataRow("ErweiterteSuche").ToString)
Catch
End Try
oNode.Tag = oDataRow("id").ToString
oNode.ImageIndex = oDataRow("ImageIndex")
oNode.SelectedImageIndex = oDataRow("ImageIndex")
oNode.StateImageIndex = oDataRow("ImageIndex")
oTreeview.Nodes.Add(oNode)
RecursivelyLoadTree(oDataRow, oNode)
End If
End If
Next oDataRow
oDS.Dispose()
oDS = Nothing
End Sub
''' <summary>
''' Child-Nodes hinzufügen
''' </summary>
''' <param name="oDataRow"></param>
''' <param name="oNode"></param>
''' <remarks></remarks>
Private Sub RecursivelyLoadTree(ByVal oDataRow As DataRow, ByRef oNode As TreeNode)
Dim oChildRow As DataRow
For Each oChildRow In oDataRow.GetChildRows("SelfRefenceRelation")
Dim oChildNode As New TreeNode()
oChildNode.Text = Trim(oChildRow("Bezeichnung").ToString())
oChildNode.Tag = oChildRow("id").ToString()
oChildNode.ImageIndex = oChildRow("ImageIndex")
oChildNode.SelectedImageIndex = oChildRow("ImageIndex")
oChildNode.StateImageIndex = oChildRow("ImageIndex")
oNode.Nodes.Add(oChildNode)
RecursivelyLoadTree(oChildRow, oChildNode)
Next oChildRow
End Sub
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
Public Function TreeView_GetRootNode(objTV As TreeView, node As TreeNode) As _DataClass.DataClass.Struktur_Selectiontype
If node.Parent Is Nothing Then
Return Datenklasse.Get_Selectiontype(node.Text)
' MsgBox(String.Format("You clicked a parent node named {0}", node.Text))
Else
Dim parent As TreeNode = node.Parent
While Not parent.Parent Is Nothing
parent = parent.Parent
End While
Return Datenklasse.Get_Selectiontype(Trim(parent.Text))
'MsgBox(String.Format("The node's parent is {0}", parent.Text))
End If
End Function
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 Or InStr(UCase(dr.Item("ErweiterteSuche")), UCase(SearchString)) > 0 Then
Dim tn As New TreeNode
tn = Me.Treesearch.Nodes.Add(dr.Item("Bezeichnung"))
tn.Tag = dr.Item("id")
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 Get_DBObjektname(ByVal type As Integer) As String
For Each dr As DataRow In Globals.Objekt.Rows
If dr.Item("Objektnr") = type Then
Return dr.Item("DBOBject")
Exit For
End If
Next
End Function
#End Region
End Class