منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : سئوال حول كود عرض البيانات فىTreeView1 الى 3 مستويات
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
يتم عرض البيانات بشكل جيد ولكن فى المشتوى الثالث يتم عرض البيانات فى اول تصنيف من المستوى الثانى
برجاء مراجعة الكود
كود :
TreeView1.Nodes.Clear()
        If con.State = ConnectionState.Closed Then con.Open()
        Dim G As Integer = 0
        Dim G_n As Integer = 0
        TreeView1.Nodes.Add(" ", "شجرة المعلومات")
        Dim cmd As New SqlCeCommand("Select id,name,cid from news where cid='0' ", con)
        cmd.Connection = con
        Dim drr As SqlCeDataReader = cmd.ExecuteReader
        While drr.Read
            G += 1
            TreeView1.Nodes.Add(drr.GetValue(0).ToString, drr.GetValue(1).ToString)
            Dim cmd_1 As New SqlCeCommand("Select id,name from news where cid=" & drr.GetValue(0).ToString & "", con)
            cmd_1.Connection = con
            Dim drr_n As SqlCeDataReader = cmd_1.ExecuteReader
            Dim Name As String
            While drr_n.Read
                Name = drr_n.GetValue(0).ToString
                TreeView1.Nodes(G).Nodes.Add(Name, drr_n.GetValue(1))
                Dim cmd_2 As New SqlCeCommand("Select id,name from news where cid=" & drr_n.GetValue(0).ToString & "", con)
                cmd_2.Connection = con
                Dim drr_n_2 As SqlCeDataReader = cmd_2.ExecuteReader
                While drr_n_2.Read
                    TreeView1.Nodes(G).Nodes(G_n).Nodes.Add(drr_n_2.GetValue(0), drr_n_2.GetValue(1))

                End While
                drr_n_2.Close()

            End While
            drr_n.Close()

        End While
        drr.Close()
        con.Close()
السلام عليكم ورحمة الله

ربما كان سبب ذلك هو المتغير G لأنك زدته بمقدار 1 في بداية الحلقة المفروض يكون في نهاية الحلقة الأولى

لأنه في بداية الحلقة سيأخذ القيمة 1 والمعروف أن Index الـ Nodes يبدأ عادة بالرقم 0

أو يمكنك تركه في بداية الحلقة ولكن في تعريفه بالأعلى تجعل قيمته الابتدائية تساوى -1 بدلا عن صفر

والله أعلم
الحمد لله توصلت لعمل كود صغير جدا وقوى جدا فى التعامل مع treeView ارجو ان يستفادة منه الاعضاء الكرام
PHP كود :
Private Sub PopulateTreeView()
        
TreeView1.Nodes.Clear()
        
fillTree(" ""بيانات الدليل"Nothing)
    
End Sub
    
Public Sub fillTree(ByVal key As StringByVal txt As StringByVal N As TreeNode)
        
Dim cmd As New SqlCeCommand
        
If con.State ConnectionState.Closed Then con.Open()
        
cmd.Connection con
        cmd
.CommandText "Select id,name,cid from tab_name where cid='" key "'"
        
Dim dr cmd.ExecuteReader
        Dim NN 
As TreeNode
        
If N Is Nothing Then
            NN 
TreeView1.Nodes.Add(keytxt0)
        Else
            
NN N.Nodes.Add(keytxt1)
        
End If
        Do While 
dr.Read
            fillTree
(dr(0).ToStringdr(1).ToStringNN)
        
Loop

    End Sub