首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

treeview数据绑定,该如何解决

2012-01-19 
treeview数据绑定treeview1如何绑定数据比如有一个表,wlhwlh中有A,B,C三个字段a15b77a25b310c43现在要把wl

treeview数据绑定
treeview1如何绑定数据
比如有一个表,wlh
wlh中有A,B,C三个字段
              a   1   5
              b   7   7
              a   2   5
              b   3   10
              c   4   3
现在要把wlh中的字段绑到treeview1中
生成一颗树
根节点为   A中的字段,B为A中的子节点,C为B的字节点
                  A中的数据相同,则为同一个节点,其他的也是一样,
这样的如何实现?


[解决办法]
从数据库取出结果集
从结果集取出第一条记录
while( 记录不为空 )
if( 字段A的值 不在树的根节点中 )
在树的根层增加节点,取值为字段A的值
当前节点定位到新增加的节点
else
当前节点定位到与字段A的值相同的节点
end if

if( 字段B的值 不在当前节点的子节点中 )
在当前节点的子节点层增加节点,取值为字段B的值
当前节点定位到新增加的节点
else
当前节点定位到与字段B的值相同的节点
end if

if( 字段C的值 不在当前节点的子节点中 )
在当前节点的子节点层增加节点,取值为字段C的值
当前节点定位到新增加的节点
else
当前节点定位到与字段C的值相同的节点
' C 相同怎么处理?你没说,这里就注释掉吧
end if

取下一条记录
end while
[解决办法]
neil_cn(Neil)正解
我做的树数据库里是存着它的父节点的值呢.不知道你的怎么设计的.
[解决办法]
Public Class Form1

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

' 建立数据表,加入数据
Dim dt As New DataTable
dt.Columns.Add( "A ", Type.GetType( "System.String "))
dt.Columns.Add( "B ", Type.GetType( "System.String "))
dt.Columns.Add( "C ", Type.GetType( "System.String "))
For i As Int32 = 0 To 4
dt.Rows.Add(dt.NewRow)
Next
For i As Int32 = 0 To 4
dt.Rows(i).Item(0) = ChrW(97 + i)
Next
dt.Rows(0).Item(1) = 1
dt.Rows(0).Item(2) = 5
dt.Rows(1).Item(1) = 7
dt.Rows(1).Item(2) = 7
dt.Rows(2).Item(1) = 2
dt.Rows(2).Item(2) = 5
dt.Rows(3).Item(1) = 3
dt.Rows(3).Item(2) = 10
dt.Rows(4).Item(1) = 4
dt.Rows(4).Item(2) = 3
dt.Rows.Add(dt.NewRow)
' 以下这一项部分节点重复,用于测试
dt.Rows(5).Item(0) = "a "
dt.Rows(5).Item(1) = 1
dt.Rows(5).Item(2) = 6
Me.DataGridView1.DataSource = dt

' 加入TreeView节点
' 这部分没有用递归,感觉有点不太规范
For i As Int32 = 0 To dt.Rows.Count - 1
Dim t As TreeNode = Me.TreeView1.Nodes(dt.Rows(i).Item(0))
Dim n As TreeNode
Dim cn As TreeNode
Dim ccn As TreeNode
If t Is Nothing Then
n = Me.TreeView1.Nodes.Add(dt.Rows(i).Item(0), dt.Rows(i).Item(0))
t = n
Dim ct As TreeNode = t.Nodes(dt.Rows(i).Item(1))
If ct Is Nothing Then
cn = t.Nodes.Add(dt.Rows(i).Item(1), dt.Rows(i).Item(1))
ct = cn
Dim cct As TreeNode = ct.Nodes(dt.Rows(i).Item(2))
If cct Is Nothing Then
ccn = ct.Nodes.Add(dt.Rows(i).Item(2), dt.Rows(i).Item(2))
End If
Else
Dim cct As TreeNode = ct.Nodes(dt.Rows(i).Item(2))


If cct Is Nothing Then
ccn = ct.Nodes.Add(dt.Rows(i).Item(2), dt.Rows(i).Item(2))
End If
End If
Else
Dim ct As TreeNode = t.Nodes(dt.Rows(i).Item(1))
If ct Is Nothing Then
cn = t.Nodes.Add(dt.Rows(i).Item(1), dt.Rows(i).Item(1))
ct = cn
Dim cct As TreeNode = ct.Nodes(dt.Rows(i).Item(2))
If cct Is Nothing Then
ccn = ct.Nodes.Add(dt.Rows(i).Item(2), dt.Rows(i).Item(2))
End If
Else
Dim cct As TreeNode = ct.Nodes(dt.Rows(i).Item(2))
If cct Is Nothing Then
ccn = ct.Nodes.Add(dt.Rows(i).Item(2), dt.Rows(i).Item(2))
End If
End If
End If
Next

End Sub

End Class

热点排行