vs2005(vb.net) TreeView动态添加节点

rmini 2011-08-19 10:36:10


上次发过关于这个问题的贴,可能是给出的表不合理,但是最终没有解决,现重新发一个,希望能给出全部代码

注意treeview1的级数不固定,在窗体上可以任意添加节点保持到表
问题:用VB.NET如何把这个表加载到窗体上的treeview1中?(假设表名为 tb_aaa_opwf )
...全文
612 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
chinaqdl21 2011-09-04
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 caozhy 的回复:]
引用 15 楼 forevermini 的回复:
其实我不懒,当初注册的时候随便写的,其实我很勤快的,真的

其实勤快的人大都是懒惰的。这个世界的发明创造很多是懒惰的人创造的。

在你勤快地问问题,不断粘贴、输入代码的时候,应该让身体懒惰下,同时让大脑勤快点。
[/Quote]

9494,其实程序员就是给懒汉们服务的。。。他们不追求效率不追求省劲,用什么程序呀。用笔算就行了

老板也不用看日终月结了。。。。直接翻账本去
lhjsj 2011-08-23
  • 打赏
  • 举报
回复
学习中
沐NeMo 2011-08-23
  • 打赏
  • 举报
回复
是的。
rmini 2011-08-22
  • 打赏
  • 举报
回复
基础有点差,我也在不断的学习
threenewbee 2011-08-22
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 forevermini 的回复:]
其实我不懒,当初注册的时候随便写的,其实我很勤快的,真的
[/Quote]
其实勤快的人大都是懒惰的。这个世界的发明创造很多是懒惰的人创造的。

在你勤快地问问题,不断粘贴、输入代码的时候,应该让身体懒惰下,同时让大脑勤快点。
rmini 2011-08-22
  • 打赏
  • 举报
回复
其实我不懒,当初注册的时候随便写的,其实我很勤快的,真的
rmini 2011-08-22
  • 打赏
  • 举报
回复
赋值给tblCatalog
然后在form_load中调用BindTree()吗?

threenewbee 2011-08-22
  • 打赏
  • 举报
回复
为什么你自己的简介是“很懒”。
其实这个就是解决你问题很好的答案。
rmini 2011-08-22
  • 打赏
  • 举报
回复
Imports System.Data
Imports System.Data.SqlClient
Imports System.Collections
Imports System.Configuration

Module Module1

Public UserName As String
Public m_id As String = ""
Public EN As Boolean
Public o_id As String
Public SU As Double

Public objDataSet As DataSet
'定义一个数据集对象
Public objDataView As DataView
'定义一个数据视图对象
Public objDataAdpter As SqlDataAdapter
'定义一个数据适配器对象
Public objSqlConnection As SqlConnection = New SqlConnection("Data Source=pc20110512;Initial Catalog=productshoes;Integrated Security=True")
'定义一个数据连接对象,并初始化
Public objCurrencyMannager As CurrencyManager
'定义一个当前的绑定管理对象
Public UserSqlstr As String '= "SELECT * FROM tb_aaa_treevw"
'定义了查询语句

End Module

以上是模块
以下是窗体代码,在窗体的GridControl1加载表tb_aaa_treevw是这样的吧?

Dim UserSqlstr As String = "SELECT * FROM tb_aaa_treevw"
objDataAdpter = New SqlDataAdapter(UserSqlstr, objSqlConnection)
Dim objtable As New DataTable()
objDataAdpter.Fill(objtable)
Me.BindingSource1.DataSource = objtable
Me.GridControl1.DataSource = BindingSource1
沐NeMo 2011-08-22
  • 打赏
  • 举报
回复
objSqlConnection是在模块未声明,还是已声明。看好啊。
你这个模块没有看到定义objSqlConnection 的啊。

--
现在问题是你自己从数据库读取一个表出来都不会,没法帮你了。自己看书百度,加强基础知识。
沐NeMo 2011-08-22
  • 打赏
  • 举报
回复
自己找问题吧。很容易的。
读取一个表。赋值给tblCatalog 就可以了。
rmini 2011-08-22
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 linjimu 的回复:]

经典:其实勤快的人大都是懒惰的。这个世界的发明创造很多是懒惰的人创造的。
楼主你应该知道:在你勤快地问问题,不断粘贴、输入代码的时候,应该让身体懒惰下,同时让大脑勤快点。 的另外含义吧。

Me.GridControl1 能看到整个数据表的内容吗。
[/Quote]

可以啊,没问题的,用的DEV控件,把以下代码放在form_load中

Dim UserSqlstr As String = "SELECT * FROM tb_aaa_treevw"
objDataAdpter = New SqlDataAdapter(UserSqlstr, objSqlConnection)
Dim objtable As New DataTable()
objDataAdpter.Fill(objtable)
Me.BindingSource1.DataSource = objtable
Me.GridControl1.DataSource = BindingSource1

沐NeMo 2011-08-22
  • 打赏
  • 举报
回复
经典:其实勤快的人大都是懒惰的。这个世界的发明创造很多是懒惰的人创造的。
楼主你应该知道:在你勤快地问问题,不断粘贴、输入代码的时候,应该让身体懒惰下,同时让大脑勤快点。 的另外含义吧。

Me.GridControl1 能看到整个数据表的内容吗。
rmini 2011-08-20
  • 打赏
  • 举报
回复
tblCatalog = SQLhelper.GetTable("select * from tbl_AAA")

运行时提示未申明名称 "SQLhelper" , 使用这个是不是需要引用什么?????
rmini 2011-08-20
  • 打赏
  • 举报
回复
Imports System.Data
Imports System.Data.SqlClient
Imports System.Collections
Imports System.Configuration

Public Class Form4
'Public MustInherit Class SqlHelper
Dim tblCatalog As New DataTable()
Private Sub Form4_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
BindTree()
End Sub

Private Sub BindTree()
Dim root As New TreeNode("信息中心", 0, 0)
'root.SelectedImageIndex = 0
'root.ImageIndex = 0
root.Name = 0
root.Tag = -1
Me.TreeView1.Nodes.Clear()
Me.TreeView1.Nodes.Add(root)
'tblCatalog = SqlHelper.GetTable("tb_aaa_treevw")
Dim UserSqlstr As String = "SELECT * FROM tb_aaa_treevw"
objDataAdpter = New SqlDataAdapter(UserSqlstr, objSqlConnection)
objDataAdpter.Fill(tblCatalog)

Me.AddTree(0, root) '0级别的 ,root作为第一个父节点
End Sub

Private Sub AddTree(ByVal ParentID As Integer, ByVal pNode As TreeNode)

Dim dvTree As DataView = New DataView(tblCatalog)
'过滤ParentID,得到当前的所有子节点
Dim node As TreeNode
dvTree.RowFilter = "ParentID=" & ParentID
If dvTree.Count > 0 Then
For Each r As DataRowView In dvTree
node = New TreeNode
node.Name = r.Item(0) '绑定 ID
node.Text = r.Item(1) '绑定文字说明
node.Tag = r.Item(2) '绑定ParentID
If (pNode Is Nothing) Then
Me.TreeView1.Nodes.Add(node)
Else
pNode.Nodes.Add(node) '新节点加到父节点
End If
'--再次递归--
Me.AddTree(r.Item(2), node)
Next
End If
pNode.Expand() '展开节点
End Sub

End Class


以上还是不行啊,??? objSqlConnection在模块中已申明
沐NeMo 2011-08-20
  • 打赏
  • 举报
回复
SQLhelper.GetTable("select * from tbl_AAA") 改为你自己的读取数据库表的代码。
rmini 2011-08-20
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 forevermini 的回复:]

tblCatalog = SQLhelper.GetTable("select * from tbl_AAA")

运行时提示未申明名称 "SQLhelper" , 使用这个是不是需要引用什么?????
[/Quote]

SQLhelper怎么使用,在线等...
沐NeMo 2011-08-19
  • 打赏
  • 举报
回复
哎,逼我去找以前的代码:
Dim tblCatalog as DataTable

Private Sub BindTree()
Dim root As New TreeNode("信息中心", 0, 0)
'root.SelectedImageIndex = 0
'root.ImageIndex = 0
root.Name = 0
root.Tag = -1
Me.Tv.Nodes.Clear()
Me.Tv.Nodes.Add(root)
tblCatalog = SQLhelper.GetTable("select * from tbl_AAA")
Me.AddTree(0, root) '0级别的 ,root作为第一个父节点
End Sub

Private Sub AddTree(ByVal ParentID As Integer, ByVal pNode As TreeNode)
Dim dvTree As DataView = New DataView(tblCatalog)
'过滤ParentID,得到当前的所有子节点
Dim node As TreeNode
dvTree.RowFilter = "ParentID=" & ParentID
If dvTree.Count > 0 Then
For Each r As DataRowView In dvTree
node =New TreeNode
node.Name = r.Item(0) '绑定 ID
node.Text = r.Item(1) '绑定文字说明
node.Tag = r.Item(2) '绑定ParentID
If (pNode Is Nothing) Then
Me.Tv.Nodes.Add(node)
Else
pNode.Nodes.Add(node) '新节点加到父节点
End If
'--再次递归--
Me.AddTree(r.Item(2), node)
Next
End If
pNode.Expand() '展开节点
End Sub
rmini 2011-08-19
  • 打赏
  • 举报
回复
4楼能不能给出vb.net代码?c#代码看不懂
5楼能给出代码吗?
沐NeMo 2011-08-19
  • 打赏
  • 举报
回复
第一个根为 root 节点, id 为 0 我们看有在窗体生成的时候加这个节点。
接下去所有节点都从数据库读出来。都加载在这个root里面。ID可以自动生成。
ID ParendID DeptName
1 0 A
2 0 B
3 1 C
4 2 D
5 0 E
6 1 F
加载后树:
root
1-A
3-C
6-F
2-B
4-D
5-E

第一次加载ParendID =0 的节点到 root里面
剩下的就点击那个节点就加载那个节点的子节点就可以了,当然也可以一次性加载所有节点。
如点击节点1-A就找出数据表里面的ParendID =1的所有节点,然后加到节点1-A里面。

ParendID一样就是指同在一个父节点。
加载更多回复(4)

16,553

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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