当前位置:编程学习 > C#/ASP.NET >>

TreeView控件递归调用access数据库的问题

小弟刚开始接触vb.net,现在有个winform程序要写,100分相赠,望高手帮助……
access数据库中的一张表,叫unit,表里就3列,分别是ID,Name,ParentID:
1,XXX,0
2,YYY,0
3,XX1,1
4,XX2,1
5,YY1,2
6,YY2,2
7,X1,3
8,X2,3
就是以上这个结构的access数据库,现在需要读取这张表的数据,然后分层的显示在TreeView控件中:
XXX
--XX1
----X1
----X2
--XX2
YYY
--YY1
--YY2
如同以上的表现方式,小弟在网络上我找了好久,都没这个VB.NET+access的源码,希望好心人帮助一下,万分感谢! --------------------编程问答-------------------- 参考,delphi代码,理解了就行

http://blog.csdn.net/bdmh/article/details/5857236
--------------------编程问答-------------------- 谢谢楼上的同志,但是由于底子比较差……还是得要看了可以运行的源码程序才会,因为数据库连接也是个问题…… --------------------编程问答-------------------- 再把 ParentID 0 进行区别一下。
第一级节点
 dim nod(第一级节点数) as TreeNode
 dim i as Integer
   nod(i) = New TreeNode
   nod(i) = TreeView1.Nodes.Add("xxx")
第二级节点    
 dim nod1(第二级节点数) as TreeNode
 dim j as Integer
   nod(j) = New TreeNode
   nod(j) = nod(i).Nodes.Add("xx1")
最后底内容
   nod(j).text="x1" 
其他的取数据的没写,只写了如何建节点的。如有疑问,可参看我的QQ空间:http://user.qzone.qq.com/631582825/infocenter#!app=2&pos=1320153235 --------------------编程问答-------------------- 这个问题:
1,建议在ACCESS表格中增加一列,表示父节点记录的ID;
2,如果数据多的时候,建议不要一下子在ACCESS中读取,速度会很慢的;本人测试过4000条记录,这样的做法非常慢了;还是把最近节点显示到控件的节点(估计也就30条)存储为一个txt文件,放在access表格中,第一次加载的时候,直接加载txt文件的信息;如果节点展开/收缩,就针对父节点ID,读取/筛选一次ACCESS表;
--------------------编程问答-------------------- 通过tree.nodes的Key来寻找父级节点即可,例如:
dim n1, n2 as treenode
for each row in tb1.rows
   if row1(2)>0 then
     n1=tree.nodes(row1(2)).add(row1(0), row1(1))
   else
     n1=tree.nodes.add(row1(0), row1(1))
   end if
next --------------------编程问答-------------------- 按照楼上的同志的思路,试了下,还是不行,哎 --------------------编程问答-------------------- 看此贴:
http://topic.csdn.net/u/20120329/16/0b8061d4-54f2-4620-ad95-68e6d55a4728.html --------------------编程问答-------------------- vb 的 没有C# 的可以吗? --------------------编程问答-------------------- 不知道你能不能看懂
有些参数 例如conn是其它地方已经赋值了
如果要能完整运行的,那我把项目打包给你好了,留下QQ吧


    '得到数据库目录记录
    Public Function GetSort(ByRef i As Integer) As Integer
        'Dim myDT As DataTable
        Dim OleDbConn As New OleDbConnection(conn)
        OleDbConn.Open()
        Dim selectcomm As String = "select * from Sort where LevelID = " & i.ToString
        Dim apt As OleDbDataAdapter = New OleDbDataAdapter(selectcomm, OleDbConn)
        Dim myDS As DataSet = New DataSet
        apt.Fill(myDS, "Sort")
        dt = myDS.Tables.Item(0)
        OleDbConn.Close()
        Return dt.Rows.Count
    End Function
    '递归查nodes
    Public Sub SeachNode(ByVal node As TreeNode, ByVal addnode As TreeNode)
        Dim myNode As TreeNode = New TreeNode
        For Each myNode In node.Nodes
            If yn = False Then
                If CInt(myNode.Tag(0)) = addnode.Tag(1) Then
                    myNode.Nodes.Add(addnode)
                    yn = True
                    Exit Sub
                Else
                    SeachNode(myNode, addnode)
                End If
            Else
                Exit Sub
            End If
        Next
    End Sub
    ''' <summary>
    ''' 把Sort表中的目录显示在tv控件中
    ''' </summary>
    ''' <remarks></remarks>
    Public Sub Showtv()
        Dim i, j As Integer
        i = 1
        j = GetSort(i)

        Do Until j = 0
            If j > 0 Then
                Dim row As DataRow

                For Each row In dt.Rows
                    If row("LevelID") = 1 Then
                        Dim myNode As TreeNode = New TreeNode
                        Dim abouts(2) As String
                        myNode.Text = row("项目标题")
                        abouts(0) = row("SortID")
                        abouts(1) = row("FatherID")
                        abouts(2) = row("LevelID")
                        myNode.Tag = abouts
                        tv.Nodes.Add(myNode)
                    Else
                        Dim myNode As TreeNode = New TreeNode
                        Dim abouts(2) As String
                        myNode.Text = row("项目标题")
                        abouts(0) = row("SortID")
                        abouts(1) = row("FatherID")
                        abouts(2) = row("LevelID")
                        myNode.Tag = abouts
                        Dim newNode As TreeNode = New TreeNode
                        yn = False
                        For Each newNode In tv.Nodes
                            If yn = True Then
                                Exit For
                            Else
                                If newNode.Tag(0) = myNode.Tag(1) Then
                                    newNode.Nodes.Add(myNode)

                                    Exit For
                                Else
                                    SeachNode(newNode, myNode)
                                End If
                            End If

                        Next
                    End If
                Next
                i += 1
                j = GetSort(i)
            End If
        Loop


    End Sub
补充:.NET技术 ,  VB.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,