PDA

View Full Version : اشکال در استفاده از کنترل treeview



drabz.net
یک شنبه 16 مهر 1391, 09:48 صبح
سلام
دوستان من میخوام از کنترل تری ویو استفاده کنم منتها خطا میده میشه یه نگاه بهش بندازید راهنمایی کنید.
93681

amirzandi
یک شنبه 16 مهر 1391, 09:59 صبح
Dim tn as New TreeNode
tn.Text = "Test"
tn.Value = 1
Me.TreeView1.Nodes.Add(tn)

drabz.net
یک شنبه 16 مهر 1391, 10:39 صبح
سلام و دست شما درد نکنه مشکلم حل شد
میخواستم بدونم چطور میشه یک جدول به شکل زیر را در treeview از دیتابیس به زبون vb واکشی کرد.
id
name
parentid
که توی اون parentid سرشاخه ها صفره
ممنون

amirzandi
یک شنبه 16 مهر 1391, 10:44 صبح
من یک نمونه کد آماده می زارم برات :


Me.ForoushTreeView.SelectedNode.Expand()
If Me.ForoushTreeView.SelectedNode.Parent IsNot Nothing Then
If Me.ForoushTreeView.SelectedNode.Parent.Value = 0 And Me.ForoushTreeView.SelectedNode.Value <> 0 Then
Me.ForoushTreeView.SelectedNode.ChildNodes.Clear()
Me.SalesButton.Visible = False
For Each n As TreeNode In Me.ForoushTreeView.Nodes(0).ChildNodes
If n.Expanded Then
n.Collapse()
End If
Next
Me.ForoushTreeView.SelectedNode.Expand()
Try
Dim db As New DataClassesDataContext
Dim query = From qry In db.CRM_TarefeTarahis _
Where qry.parent_id = Me.ForoushTreeView.SelectedNode.Value.ToString _
Order By qry.name _
Select qry

For Each item In query
Dim n As New TreeNode
n.Text = item.name
n.SelectAction = TreeNodeSelectAction.SelectExpand
n.Value = item.id
n.Target = "AddSub"
n.PopulateOnDemand = True
Me.ForoushTreeView.SelectedNode.ChildNodes.Add(n)
Next
Catch ex As Exception

End Try

ElseIf Me.ForoushTreeView.SelectedNode.Target = "AddSub" Then
Me.ForoushTreeView.SelectedNode.ChildNodes.Clear()
Me.SalesButton.Visible = False
Try
Dim db As New DataClassesDataContext
Dim query = From qry In db.CRM_TarefeTarahi_Datas _
Where qry.catID = Me.ForoushTreeView.SelectedNode.Value.ToString _
Order By qry.name _
Select qry

For Each item In query
Dim n As New TreeNode
n.Value = item.id
n.Text = item.name
n.Target = "AddUnit"
n.SelectAction = TreeNodeSelectAction.Select
n.PopulateOnDemand = False
Me.ForoushTreeView.SelectedNode.ChildNodes.Add(n)
Next
Me.ForoushTreeView.SelectedNode.Expand()
Catch ex As Exception

End Try
ElseIf Me.ForoushTreeView.SelectedNode.Target = "AddUnit" Then
Me.SalesButton.Visible = True
End If
End If

Me.UpdatePanel1.Update()
End Sub

drabz.net
یک شنبه 16 مهر 1391, 17:56 عصر
راستش تا حدود زیادی مشکل ممن حل شد منتها من سطح اول از نود ها (یعنی همون هایی که parent_id=0) رو خوندم و در treeview نشون دادم. حالا میخوام این کد را بسط بدم و تا هرسطحی که در دیتابیس وجود دارد نود ها را بسط بدم. به این منظور کدم که بصورت زیر هست را چه تغییری بدم. ممنون

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
FillTreeView(0)
End If
End Sub

Function FillTreeView(ByVal ParentID As Integer) As Boolean
Dim cn As New SqlClient.SqlConnection
cn.ConnectionString = (ConfigurationManager.ConnectionStrings("database").ConnectionString)
Dim cmd As New SqlClient.SqlCommand("Select_Category_By_ParentID", cn)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.AddWithValue("@ParentID", ParentID)
cn.Open()
Dim myDataReader As SqlClient.SqlDataReader
myDataReader = cmd.ExecuteReader()
Do While (myDataReader.Read())
Dim tn As New TreeNode
tn.Text = myDataReader("Name").ToString
tn.Value = myDataReader("ID").ToString
Me.TreeView1.Nodes.Add(tn)
Loop
myDataReader.Close()
cmd.Dispose()
cn.Close()
Return True
End Function

amirzandi
یک شنبه 16 مهر 1391, 18:13 عصر
بیا عزیز


Imports System.Data
Imports System.Data.SqlClient
Partial Class _Default
Inherits System.Web.UI.Page

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
LoadTreeNode(0)
'----
If Me.TreeView1.Nodes.Count > 0 Then
For Each tn As TreeNode In Me.TreeView1.Nodes
If LoadTreeNode(tn.Value).Count > 0 Then
For Each t As TreeNode In LoadTreeNode(tn.Value)
tn.ChildNodes.Add(t)
Next
End If
Next
End If
Me.TreeView1.ExpandAll()
End If
End Sub
Private Function LoadTreeNode(ByVal id As Integer) As List(Of TreeNode)
Dim tn As New List(Of TreeNode)
Dim cn As New SqlConnection("ConnectionString")
Using cn
Dim cmd As New SqlCommand("SELECT * FROM Table WHERE (id = @id)", cn)
cmd.Parameters.AddWithValue("@id", id)
Dim dr As SqlDataReader = cmd.ExecuteReader()
Do While dr.Read
Dim t As New TreeNode
t.Value = dr.Item("id")
t.Text = dr.Item("Name")
tn.Add(t)
Loop
End Using
Return tn
End Function
End Class