TreeView不显示的问题?

chen99yjeyotech 2003-09-15 11:12:19
我通过SQLServer数据库动态生成TreeView 用递归

可是树没有显示数据,麻烦各位看一下,问题在哪?

表结构如下:
字段 数据类型 长度
NodeID int 4
ParentId varchar 50
NodeName varchar 50

程序如下:

Imports System.Data
Imports System.Data.SqlClient
Imports System.Configuration
Imports System.Collections
Imports Microsoft.Web.UI.WebControls
Imports System.ComponentModel
Imports System.Web
Imports System.Web.SessionState
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.HtmlControls

Public Class WebForm1
Inherits System.Web.UI.Page
Protected WithEvents TreeView1 As Microsoft.Web.UI.WebControls.TreeView

Dim mySet As New DataSet()

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim myConnection As New SqlConnection(ConfigurationSettings.AppSettings("connectionString"))
myConnection.Open()
CreateRenderDataSet()
initTree(TreeView1.Nodes, "", 1)
myConnection.Close()
End Sub

Private Sub CreateRenderDataSet()
Dim myConnection As New SqlConnection(ConfigurationSettings.AppSettings("connectionString"))
myConnection.Open()
Dim myCommand As New SqlDataAdapter("Select * From Left_tab", myConnection)
myCommand.Fill(mySet, "Left_tab")

End Sub

Private Sub initTree(ByVal Nds As Microsoft.Web.UI.WebControls.TreeNodeCollection, ByVal mparentId As String, ByVal levelId As Integer)
Dim dv As New DataView()
Dim tmpNode As New Microsoft.Web.UI.WebControls.TreeNode()
Dim IntId As String
Dim intLevel As Integer
Dim dvrow As DataRowView
dv.Table = mySet.Tables("Left_tab")
Dim sql As String = "ParentId = '" & mparentId & "' and NodeID = '" & levelId & "'"
dv.RowFilter = sql
For Each dvrow In dv
tmpNode = New TreeNode()
tmpNode.ID = dvrow("ParentId")
tmpNode.Text = dvrow("NodeName")
IntId = dvrow("ParentId")
'If (dvrow("Url") <> "") Then
' tmpNode.NavigateUrl = dvrow("Url")
'End If

intLevel = dvrow("NodeId")

Nds.Add(tmpNode)
initTree(tmpNode.Nodes, IntId, intLevel + 1)

Next

End Sub
End Class
...全文
158 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
chen99yjeyotech 2003-09-15
  • 打赏
  • 举报
回复
TO:junmingl(峰高千仞)
非常感谢你!麻烦你看看我的程序.问题出现在哪里?如何才能把datarowView和dataview关联?
junmingl 2003-09-15
  • 打赏
  • 举报
回复
给个例子给你:
Sub treeviewbind()
Dim conPriMain As New SqlConnection(ConfigurationSettings.AppSettings("Connzsglsa"))

If trvPriArt.Nodes.Count <> 0 Then '如果treeview控件中有节点,清除所有节点
trvPriArt.Nodes.Clear()
End If

Dim strUser As String
Try
strUser = Request.Cookies("user")("rymc")
Catch
Response.Write("<script language='javascript'>parent.location.href='Index.aspx'</script>")
Return
End Try

Dim nodeindex As Integer
''nodeindex = TreeView1.Nodes.IndexOf(n)
nodeindex = 1

Dim strCount As String = "select count(*) from esot_privatemainclass(nolock) where grkbm='" & Request.QueryString("grkbm").Trim() & "'"
Dim cmdCount As New SqlCommand(strCount, conPriMain)
cmdCount.Connection.Open()
Dim intCount As Integer = Integer.Parse(cmdCount.ExecuteScalar())
cmdCount.Connection.Close()

If intCount > 0 Then

Dim myselectstr1 As String = "select ztmc,ztbm from esot_privatemainclass(nolock) where grkbm='" & Request.QueryString("grkbm").Trim() & "' order by ztbm"

Dim myclass1 As New gy()
Dim mydatareader1 As SqlDataReader
mydatareader1 = myclass1.getdatareader(myselectstr1)

Dim bh2 As Int16 = 0
Do While mydatareader1.Read
Dim n1 = New TreeNode() '新建节点并设置其属性
n1.Text = mydatareader1.Item(0)
trvPriArt.Nodes.Add(n1) '添加节点

Dim strCount1 As String = "select count(*) from esot_privatesubclass(nolock) where ztbm='" & Trim(mydatareader1.Item(1)) & "' and grkbm='" & Request.QueryString("grkbm").Trim() & "'"
Dim cmdCount1 As New SqlCommand(strCount1, conPriMain)
cmdCount1.Connection.Open()
Dim intCount1 As Integer = Integer.Parse(cmdCount1.ExecuteScalar())
cmdCount1.Connection.Close()

If intCount1 > 0 Then
Dim myselectstr2 As String = "select lbmc,lbbm from esot_privatesubclass(nolock) where ztbm='" & Trim(mydatareader1.Item(1)) & "' and grkbm='" & Request.QueryString("grkbm").Trim() & "' order by lbbm"
Dim myclass2 As New gy()
Dim mydatareader2 As SqlDataReader
mydatareader2 = myclass2.getdatareader(myselectstr2)
Dim bh3 As Int16 = 0
Do While mydatareader2.Read
Dim n2 As New TreeNode()
n2 = New TreeNode() '新建节点并设置其属性
n2.Text = "<a href='PrivateList.aspx?lbbm=" & Trim(mydatareader2.Item(1)) & "&ztbm=" & Trim(mydatareader1.Item(1)) & "&grkbm=" & Request.QueryString("grkbm").Trim() & "' target='main'><font face='宋体' color='#006400'> " & mydatareader2.Item(0) & "</font></a>"
trvPriArt.Nodes(bh2).Nodes.Add(n2) '添加节点

Loop
bh2 += 1
End If
Loop
mydatareader1.Close()

trvPriArt.Nodes(0).Expanded = True

'trvPriArt.Nodes(0).Nodes(0).Expanded = True

End If
End Sub
树猫 2003-09-15
  • 打赏
  • 举报
回复
up
chen99yjeyotech 2003-09-15
  • 打赏
  • 举报
回复
TO loveno1(keep)
你照着 guoyan19811021(吉祥) 的思路去写代码.就可以啦.
loveno1 2003-09-15
  • 打赏
  • 举报
回复
你怎么OK了,麻烦你告诉我,谢谢!
chen99yjeyotech 2003-09-15
  • 打赏
  • 举报
回复
OK了!谢谢!
loveno1 2003-09-15
  • 打赏
  • 举报
回复
我也是同样的问题

你们的IEWebControls是在哪下载的?

我已经装了一个了,如何卸载?
chen99yjeyotech 2003-09-15
  • 打赏
  • 举报
回复
救我!!!
chen99yjeyotech 2003-09-15
  • 打赏
  • 举报
回复
To guoyan19811021(吉祥)
谢谢你!你那里有没有用asp.net写的代码啊.我照你的做了.但是好像不行哦.
guoyan19811021 2003-09-15
  • 打赏
  • 举报
回复
DataBase:
NodeNumber 自动编号
NodeName 文本
TreeNode 文本
guoyan19811021 2003-09-15
  • 打赏
  • 举报
回复
Sub CreateChildTree(ByVal ParentNode As TreeNode, ByVal NodeId As String, ByVal ParentNodeText As String)
Dim ds As DataSet = New DataSet()
Dim conn As OleDbConnection
conn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & server.MapPath("database\mytree.mdb"))
Dim mycommand As OleDbDataAdapter
mycommand = New OleDbDataAdapter("select * from tree where TreeNode='" + NodeId + "' order by NodeNumber desc", conn)
conn.Open()
mycommand.Fill(ds)
Dim i As Integer

For i = 0 To ds.Tables(0).Rows.Count - 1

Dim myTreeNode As New TreeNode()
myTreeNode.Text = ds.Tables(0).Rows(i).Item(1)
myTreeNode.ImageUrl = "images/folderclosed.gif"
myTreeNode.ExpandedImageUrl = "images/folderopen.gif"
myTreeNode.Target = "mainFrame"
ParentNode.Nodes.Add(myTreeNode)
CreateChildTree(myTreeNode, ds.Tables(0).Rows(i).Item(0), ds.Tables(0).Rows(i).Item(1))
CreateChildTree(myTreeNode, ds.Tables(0).Rows(i).Item(0), ds.Tables(0).Rows(i).Item(1))
Next
End Sub
guoyan19811021 2003-09-15
  • 打赏
  • 举报
回复
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'在此处放置初始化页的用户代码

Dim NodeText As String = "-1"
Dim ds As DataSet = New DataSet()
Dim conn As OleDbConnection
conn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("dATABASE\MYTREE.mdb"))
Dim mycommand As OleDbDataAdapter
mycommand = New OleDbDataAdapter("select * from tree where TreeNode='" + NodeText + "' order by NodeNumber asc", conn)
conn.Open()
mycommand.Fill(ds)
Dim i As Integer
'===根结点数
For i = 0 To ds.Tables(0).Rows.Count - 1
Dim myTreeNode As New TreeNode()
myTreeNode.Text = ds.Tables(0).Rows(i).Item(1)
myTreeNode.ImageUrl = "images/folderclosed1.gif"
myTreeNode.ExpandedImageUrl = "images/folderopen1.gif"
TreeView1.Nodes.Add(myTreeNode)
CreateChildTree(myTreeNode, ds.Tables(0).Rows(i).Item(0), ds.Tables(0).Rows(i).Item(1))
Next
End Sub
chen99yjeyotech 2003-09-15
  • 打赏
  • 举报
回复
我急死了.救命啊.
我是用VB.net写的.谁能为我提供例子啊.
chen99yjeyotech 2003-09-15
  • 打赏
  • 举报
回复
To seesea125(雨天
我照你的做了.但不行哦.能否提供一个完整的例子?谢谢
seesea125 2003-09-15
  • 打赏
  • 举报
回复
Private sub改成protected或public先
你的递归思路有问题
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
CreateDataSet()
intiTree(TreeView1.Nodes, 0)
End Sub
Protected Sub intiTree(ByRef Nds As TreeNodeCollection, ByVal parentId As Integer)
Dim dv As New DataView()
Dim drv As DataRowView
Dim tmpNd As TreeNode
Dim intId As Integer
dv.Table = ds.Tables("tree")
dv.RowFilter = "PARENTID=’" & parentId & "’"
For Each drv In dv
tmpNd = New TreeNode()
intId = drv("NODE_ID")
tmpNd.ID = strId
tmpNd.Text = drv("NODE_NAME ")
tmpNd.ImageUrl = drv("ICON").ToString
Nds.Add(tmpNd)
intiTree(Nds(Nds.Count - 1).Nodes, intId)
Next
End Sub

62,039

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧