Imports C1.Win.C1TrueDBGrid
Imports System
Imports System.Data
Imports System.Data.SqlTypes
Imports System.Data.SqlClient
Public Class Form2
Dim xvertragspartnernr As String = 2
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim dt As New DataTable
dt = Me.Get_SubStruktur(0, 2, 1)
Me.ComboBoxTree1.TreeView.Nodes.Clear()
Me.ComboBoxTree1.TreeView.Nodes.Add("Test")
Me.Update_Node(dt, Me.ComboBoxTree1.TreeView.Nodes(0), "Vertragspartner", 1)
Me.ComboBoxTree1.TreeView.ExpandAll()
End Sub
'''
''' Parent-Beziehung herstellen und Struktur abfüllen
'''
'''
'''
'''
Private Sub Update_Node(ByVal oSourceData As DataTable, ByRef node As TreeNode, ByVal type As String, ByVal Details As Integer)
If Not (oSourceData Is Nothing) Then
Dim oView As DataView = oSourceData.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("Vertragselementnr"), _
oDS.Tables(0).Columns("Parentid"))
End If
oTable.Dispose()
oTable = Nothing
LoadNode(oDS, node, type, Details)
oDS.Dispose()
oDS = Nothing
End If
End Sub
'''
''' Tree aufbauen
'''
''' Input-Dataset
''' Aktueller Node
''' Type Vertragspartner oder Vertragstyp
'''
Private Sub LoadNode(ByVal oDS As DataSet, ByRef oNode As TreeNode, ByVal type As String, ByVal Details As Integer)
'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 oNode1 As New TreeNode()
oNode1.Text = oDataRow("Bezeichnung").ToString()
Select Case type
Case "Vertragspartner"
oNode1.Tag = New Treenode_Descriptor("Vertragstyp", oDataRow("vertragselementnr").ToString, xVertragspartnernr, oDataRow("vertragstypnr").ToString)
oNode1.ImageIndex = 1
oNode1.SelectedImageIndex = 1
oNode1.StateImageIndex = 1
Case "Vertragstyp"
If oDataRow("aktiv") = True Then
oNode1.Tag = New Treenode_Descriptor("Vertragspartner", oDataRow("vertragselementnr").ToString, xVertragspartnernr, oDataRow("vertragstypnr").ToString)
oNode1.ImageIndex = 0
oNode1.SelectedImageIndex = 0
oNode1.StateImageIndex = 0
Else
oNode1.Tag = New Treenode_Descriptor("Vertragspartner", oDataRow("vertragselementnr").ToString, xVertragspartnernr, oDataRow("vertragstypnr").ToString)
oNode1.ImageIndex = 4
oNode1.SelectedImageIndex = 4
oNode1.StateImageIndex = 4
End If
End Select
oNode.Nodes.Add(oNode1)
RecursivelyLoadNode(oDataRow, oNode1, type, Details)
End If
End If
Next oDataRow
oDS.Dispose()
oDS = Nothing
End Sub
'''
''' Child-Nodes hinzufügen
'''
'''
'''
'''
Private Sub RecursivelyLoadNode(ByVal oDataRow As DataRow, ByRef oNode As TreeNode, ByVal type As String, ByVal Details As Integer)
Dim oChildRow As DataRow
For Each oChildRow In oDataRow.GetChildRows("SelfRefenceRelation")
Dim oChildNode As New TreeNode()
oChildNode.Text = oChildRow("Bezeichnung").ToString()
oChildNode.Tag = New Treenode_Descriptor("Vertragselement", oChildRow("Vertragselementnr").ToString(), xVertragspartnernr, oDataRow("vertragstypnr").ToString)
oChildNode.ImageIndex = 2
oChildNode.SelectedImageIndex = 2
oChildNode.StateImageIndex = 2
oNode.Nodes.Add(oChildNode)
RecursivelyLoadNode(oChildRow, oChildNode, type, Details)
Next oChildRow
End Sub
'''
''' Laden der Substruktur
'''
''' Nummer des aktuellen Vertragspartners
'''
'''
Private Function Get_SubStruktur(ByVal vertragstypnr As Integer, ByVal Vertragspartnernr As Integer, ByVal Details_anzeigen As Integer) As DataTable
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
Dim dtToReturn As DataTable = New DataTable()
Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute)
scmCmdToExecute.CommandText = "dbo.sp_vertragsuebersicht_get_struktur"
scmCmdToExecute.CommandType = CommandType.StoredProcedure
scmCmdToExecute.Connection = conn.scoDBConnection
Try
scmCmdToExecute.Parameters.Add(New SqlParameter("@vertragstypnr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, vertragstypnr))
scmCmdToExecute.Parameters.Add(New SqlParameter("@vertragspartnernr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Vertragspartnernr))
scmCmdToExecute.Parameters.Add(New SqlParameter("@mitarbeiternr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Globals.clsmitarbeiter.iMitarbeiternr.Value))
scmCmdToExecute.Parameters.Add(New SqlParameter("@Details", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Details_anzeigen))
sdaAdapter.Fill(dtToReturn)
Return dtToReturn
Catch ex As Exception
Throw New Exception("clsVertragsuebersicht::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex)
Finally
scmCmdToExecute.Dispose()
sdaAdapter.Dispose()
End Try
End Function
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
End Class
'''
''' Treenode-Descriptor zur Befüllung des Tree-Node-Tags
'''
''' Treenode-Tags werden mit den 2 Elementen (Type und Keyvalue) befüllt:
''' Type: Vertragspartner, Vertragstyp
''' Keyvalue: Primary-Key des Elementes
Public Class Treenode_Descriptor
Dim m_type As String
Property Type() As String
Get
Return m_type
End Get
Set(ByVal value As String)
m_type = value
End Set
End Property
Dim m_keyvalue As Integer
Property Keyvalue() As Integer
Get
Return m_keyvalue
End Get
Set(ByVal value As Integer)
m_keyvalue = value
End Set
End Property
Dim m_vertragspartnernr As Integer
Property Vertragspartnernr() As Integer
Get
Return m_vertragspartnernr
End Get
Set(ByVal value As Integer)
m_vertragspartnernr = value
End Set
End Property
Dim m_vertragstypnr As Integer
Property Vertragstypnr() As Integer
Get
Return m_vertragstypnr
End Get
Set(ByVal value As Integer)
m_vertragstypnr = value
End Set
End Property
Sub New(ByVal Type As String, ByVal Keyvalue As Integer, ByVal Vertragspartnernr As Integer, ByVal vertragstypnr As Integer)
Me.Type = Type
Me.Keyvalue = Keyvalue
Me.Vertragspartnernr = Vertragspartnernr
Me.Vertragstypnr = vertragstypnr
End Sub
End Class