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