You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
AssesmentMgmt/.svn/pristine/00/004d6758e6a292fee4a3c5e2f0d...

413 lines
14 KiB

Imports System
Imports System.Data
Imports System.Data.SqlTypes
Imports System.Data.SqlClient
Imports DevComponents
Imports DropDownControls
Public Class clsISIUebersicht
Dim SpaltenTitel As New Utils.Tabellenspalte
Dim daten As New DataTable
Public Sub Get_Data(ByRef c1daten As C1.Win.C1TrueDBGrid.C1TrueDBGrid, ByVal Typ As Integer)
Try
Dim ds As New DataSet
Dim connection As New SqlConnection()
Dim da As New SqlDataAdapter("", connection)
Dim sqlcmd As New SqlCommand
sqlcmd.CommandText = "sp_get_isidata"
sqlcmd.Parameters.Add(New SqlParameter("@typ", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Typ))
sqlcmd.CommandType = CommandType.StoredProcedure
sqlcmd.Connection = connection
Try
connection.ConnectionString = Globals.sConnectionString
connection.Open()
da.SelectCommand = sqlcmd
da.Fill(ds, "Datatable1")
Dim status As New clsStatus
c1daten.DataSource = Nothing
c1daten.DataSource = ds.Tables(0)
c1daten.DataMember = ds.Tables(0).TableName
SpaltenTitel.Spaltentitel_aktualisieren(c1daten, "Pruefschritt", ds.Tables(0))
Catch ex As Exception
MsgBox(ex.Message)
Finally
connection.Close()
da.Dispose()
sqlcmd.Dispose()
End Try
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
End Class
Public Class IsiTree
#Region "Deklarationen"
Dim treedata As New DataSet
Dim TreeaufbauSuche As Boolean = False
Dim TreeaufbauNr As Integer = 0
Dim FoundNode As Integer = 0
Dim Searchstring As String = ""
Public Treesearch As New AdvTree.AdvTree
#End Region
#Region "Tree"
Public Sub Load_Treeview(ByRef tree As DevComponents.AdvTree.AdvTree)
tree.Nodes.Clear()
TreeaufbauNr = -1
Load_Treedata("")
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
tree.ExpandAll()
End If
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_Isi_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 = " "
Try
Globals.treedata_for_search.Columns.Add(dc)
Catch
End Try
Else
Try
Globals.treedata_for_search.Columns.Add(c.ColumnName)
Catch
End Try
End If
Next
End If
For Each row As DataRow In treedata.Tables(0).Rows
Globals.treedata_for_search.ImportRow(row)
Next
Catch ex As Exception
'MsgBox(ex.Message)
Finally
connection.Close()
da.Dispose()
selectcommand.Dispose()
End Try
End Function
Protected Function GetAllNodes(ByVal treestruktur As DevComponents.AdvTree.AdvTree) As List(Of TreeNode)
Dim allNodes As List(Of TreeNode) = New List(Of TreeNode)()
' start recursion for each root node of the treeview
For i As Integer = 0 To treestruktur.Nodes.Count - 1
GetAllNodes(treestruktur.Nodes(i), allNodes)
Next
Return allNodes
End Function
Protected Sub GetAllNodes(ByVal subRoot As DevComponents.AdvTree.Node, ByVal allNodes As List(Of TreeNode))
' check for null (this can be removed since within th
If (subRoot Is Nothing) Then
Exit Sub
End If
' add subroot
Dim r As DataRow
r = treedata_for_search.NewRow
r.Item(0) = subRoot.Tag
Try
r.Item(1) = subRoot.Parent.Tag
Catch
r.Item(1) = 0
End Try
r.Item(2) = subRoot.Text
r.Item(3) = subRoot.ImageIndex
treedata_for_search.Rows.Add(r)
'allNodes.Add(subRoot)
' add all it's children
For i As Integer = 0 To subRoot.Nodes.Count - 1
GetAllNodes(subRoot.Nodes(i), allNodes)
Next
End Sub
''' <summary>
''' Tree aufbauen
''' </summary>
''' <param name="oDS"></param>
''' <param name="oTreeview"></param>
''' <remarks></remarks>
Private Sub LoadTreeView(ByVal oDS As DataSet, ByRef oTreeview As DevComponents.AdvTree.AdvTree)
'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 DevComponents.AdvTree.Node
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")
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 DevComponents.AdvTree.Node)
Dim oChildRow As DataRow
For Each oChildRow In oDataRow.GetChildRows("SelfRefenceRelation")
Dim oChildNode As New DevComponents.AdvTree.Node
oChildNode.Text = Trim(oChildRow("Bezeichnung").ToString())
oChildNode.Tag = oChildRow("id").ToString()
oChildNode.ImageIndex = oChildRow("ImageIndex")
oNode.Nodes.Add(oChildNode)
RecursivelyLoadTree(oChildRow, oChildNode)
Next oChildRow
End Sub
Public Function FindNode(ByVal _nodeCollection As AdvTree.NodeCollection, ByVal SearchVal As Integer, ByVal SearchString As String) As AdvTree.Node
Dim tmpNode As AdvTree.Node
For Each _child As AdvTree.Node 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 Init_Search()
FoundNode = 0
Searchstring = ""
Me.Treesearch.Nodes.Clear()
End Function
Public Function SearchNode(ByRef tree As AdvTree.AdvTree, ByVal SearchString As String) As AdvTree.Node
'Return tree.FindNodeByCellText(SearchString)
Me.Treesearch.Nodes.Clear()
For Each dr As DataRow In treedata_for_search.Rows
'InStr(UCase(SearchString), UCase(dr.Item("Bezeichnung")))
If InStr(UCase(dr.Item("Bezeichnung")), UCase(SearchString)) > 0 Or InStr(UCase(dr.Item("ErweiterteSuche")), UCase(SearchString)) > 0 Then
Dim tn As New AdvTree.Node
tn.Text = dr.Item("Bezeichnung")
tn.Tag = dr.Item("id")
Treesearch.Nodes.Add(tn)
End If
Next
Return FindFirst(tree)
End Function
Public Function FindFirst(ByRef Tree As AdvTree.AdvTree) As AdvTree.Node
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 AdvTree.AdvTree) As AdvTree.Node
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 AdvTree.AdvTree) As AdvTree.Node
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 AdvTree.AdvTree) As AdvTree.Node
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
#End Region
#Region "ComboboxTree"
Public Sub Load_ComboboxTree(ByRef tree As Object)
tree.Nodes.Clear()
TreeaufbauNr = -1
Load_Treedata("")
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
LoadTreeView1(oDS, tree)
oDS.Dispose()
oDS = Nothing
tree.ExpandAll()
End If
End Sub
Private Sub LoadTreeView1(ByVal oDS As DataSet, ByRef oTreeview As Object)
'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 ComboTreeNode
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")
oTreeview.Nodes.Add(oNode)
RecursivelyLoadTree1(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 RecursivelyLoadTree1(ByVal oDataRow As DataRow, ByRef oNode As ComboTreeNode)
Dim oChildRow As DataRow
For Each oChildRow In oDataRow.GetChildRows("SelfRefenceRelation")
Dim oChildNode As New ComboTreeNode
oChildNode.Text = Trim(oChildRow("Bezeichnung").ToString())
oChildNode.Tag = oChildRow("id").ToString()
oChildNode.ImageIndex = oChildRow("ImageIndex")
oNode.Nodes.Add(oChildNode)
RecursivelyLoadTree1(oChildRow, oChildNode)
Next oChildRow
End Sub
Public Function ComboboxTree_FindNode(ByVal _nodeCollection As ComboTreeNodeCollection, ByVal SearchVal As Integer, ByVal SearchString As String) As ComboTreeNode
Dim tmpNode As ComboTreeNode
For Each _child As ComboTreeNode 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 = ComboboxTree_FindNode(_child.Nodes, SearchVal, SearchString)
If Not tmpNode Is Nothing Then
Return tmpNode
End If
Next
Return Nothing
End Function
#End Region
End Class