A
a1
a2
a3
a4
B
b1
b2
b3
b4
C
c1
c2
c4
c4
For tt = 1 To UBound(idbsi)
If ii = 1 Then
If glyuan = "" Then
rs2.Open "select * from " & bm & " where id=" & xuexiaoid & " and b1=" & idbsi(tt), conn, 1, 1
Else
rs2.Open "select * from " & bm & " where b1=" & idbsi(tt), conn, 1, 1
End If
Else
rs2.Open "select * from " & bm & " where b1=" & idbsi(tt), conn, 1, 1
End If
If Not rs2.EOF Then
While Not rs2.EOF
idbs2 = idbs2 & "//" & rs2.Fields("id")
'Debug.Print "[外"; ii & "-内"; tt & "=" & idbs; "]" & "父节点:bm" & ii & "a" & Rs2.Fields("b1"), "下一父节点:bm" & ii + 1 & "a" & (Rs2.Fields("id"))
Set xNode = TreeView1.Nodes.Add("bm" & ii & "a" & rs2.Fields("b1"), tvwChild)
'xNode.Expanded = True
xNode.Key = "bm" & ii + 1 & "a" & (rs2.Fields("id"))
xNode.Tag = rs2.Fields("id")
xNode.Text = rs2.Fields("bm")
xNode.Image = 1
xNode.SelectedImage = 2
rs2.MoveNext
Wend
Else
'MsgBox idbsi(tt)
End If
Next tt
idbs = idbs2
Next ii
Private Sub TreeView1_DblClick()
If mNodeClick = 1 Then Exit Sub
MsgBox TreeView1.Nodes.Item(TreeView1.SelectedItem.Index).Text
Unload Me
End Sub
这样不行
8 个解决方案
#1
For tt = 1 To UBound(idbsi)
If ii = 1 Then
If glyuan = "" Then
rs2.Open "select * from " & bm & " where id=" & xuexiaoid & " and b1=" & idbsi(tt), conn, 1, 1
Else
rs2.Open "select * from " & bm & " where b1=" & idbsi(tt), conn, 1, 1
End If
Else
rs2.Open "select * from " & bm & " where b1=" & idbsi(tt), conn, 1, 1
End If
If Not rs2.EOF Then
While Not rs2.EOF
idbs2 = idbs2 & "//" & rs2.Fields("id")
'Debug.Print "[外"; ii & "-内"; tt & "=" & idbs; "]" & "父节点:bm" & ii & "a" & Rs2.Fields("b1"), "下一父节点:bm" & ii + 1 & "a" & (Rs2.Fields("id"))
Set xNode = TreeView1.Nodes.Add("bm" & ii & "a" & rs2.Fields("b1"), tvwChild)
'xNode.Expanded = True
xNode.Key = "bm" & ii + 1 & "a" & (rs2.Fields("id"))
xNode.Tag = rs2.Fields("id")
xNode.Text = rs2.Fields("bm")
xNode.Image = 1
xNode.SelectedImage = 2
rs2.MoveNext
Wend
Else
'MsgBox idbsi(tt)
End If
Next tt
idbs = idbs2
Next ii
Private Sub TreeView1_DblClick()
If mNodeClick = 1 Then Exit Sub
MsgBox TreeView1.Nodes.Item(TreeView1.SelectedItem.Index).tag
Unload Me
End Sub
这样不行
#2
.Tag 并不是只能放rs2.Fields("id")这一个东西,东西复杂就弄propertybag 简单点的就直接”当前节点ID|上一节点ID“,然后通过上一级节点ID找到上一节点,一级一级往上找就是了,这么简单的东西自己发挥一下呗
#3
可是有时候要获得下一级的节点的某个值,又如点击a1得到a2的tag,点击c1得到c2的tag。
#4
如何得到当前节点所在所有节点对应的tag(不是text),不会。求高手。
#5
父节点的父节点:TreeView1.SelectedItem.Parent.Parent
父节点的父节点的父节点:TreeView1.SelectedItem.Parent.Parent..Parent
……
子节点:TreeView1.SelectedItem.Child
子节点的子节点:TreeView1.SelectedItem.Child.Child
子节点的子节点的子节点:TreeView1.SelectedItem.Child.Child.Child
……
Private Sub Form_Load()
Dim tnode As Node
Set tnode = TreeView1.Nodes.Add
tnode.Text = "0"
tnode.Key = "n0"
tnode.Expanded = True
Dim xx As Long
For xx = 1 To 10
Set tnode = TreeView1.Nodes.Add("n" & (xx - 1), tvwChild, "n" & xx, xx)
tnode.Expanded = True
Next
End Sub
Private Sub TreeView1_Click()
On Error Resume Next
Dim tnode As Node
Set tnode = TreeView1.SelectedItem.Parent
If Err.Number <> 0 Then
MsgBox "无父节点"
Err.Clear
Else
MsgBox "父节点是" & tnode.Text
End If
Set tnode = TreeView1.SelectedItem.Child
If Err.Number <> 0 Then
MsgBox "无子节点"
Err.Clear
Else
MsgBox "子节点是" & tnode.Text
End If
End Sub
#6
#7
父子节点那些我明白,但这个依然没有解决,可能是我没能说清楚我的目的?
我的目的是:无论这树有多少个节点,点击任意一个节点,都可以此节点对应的树的第2级节点的那个的tag,如点击a1得到a2的tag,点击c8也是得到c2的tag,这样。
谢谢高手了。
我的目的是:无论这树有多少个节点,点击任意一个节点,都可以此节点对应的树的第2级节点的那个的tag,如点击a1得到a2的tag,点击c8也是得到c2的tag,这样。
谢谢高手了。
#8
A 第0层
a1 第1层
a2 第2层
a3 第3层
a4 第4层
B 第0层
b1 第1层
b2 第2层
b3 第3层
b4 第4层
……
定义层数,根节点层数为0,其余节点层数等于父节点层数+1,层数值在添加Node的时候存到Node的.tag属性里面,具体方法见#2楼,从.SelectedItem.tag取当前节点的层数,循环.parent取父节点、父父节点、父父父节点一直取到.tag属性里面层数=2的节点或者循环.child取子节点、子子节点、子子子节点一直取到.tag属性里面层数=2的节点。
方法在#2、#5楼不都告诉你了,你就不知道自己动点脑子变通一下
a1 第1层
a2 第2层
a3 第3层
a4 第4层
B 第0层
b1 第1层
b2 第2层
b3 第3层
b4 第4层
……
定义层数,根节点层数为0,其余节点层数等于父节点层数+1,层数值在添加Node的时候存到Node的.tag属性里面,具体方法见#2楼,从.SelectedItem.tag取当前节点的层数,循环.parent取父节点、父父节点、父父父节点一直取到.tag属性里面层数=2的节点或者循环.child取子节点、子子节点、子子子节点一直取到.tag属性里面层数=2的节点。
方法在#2、#5楼不都告诉你了,你就不知道自己动点脑子变通一下
#1
For tt = 1 To UBound(idbsi)
If ii = 1 Then
If glyuan = "" Then
rs2.Open "select * from " & bm & " where id=" & xuexiaoid & " and b1=" & idbsi(tt), conn, 1, 1
Else
rs2.Open "select * from " & bm & " where b1=" & idbsi(tt), conn, 1, 1
End If
Else
rs2.Open "select * from " & bm & " where b1=" & idbsi(tt), conn, 1, 1
End If
If Not rs2.EOF Then
While Not rs2.EOF
idbs2 = idbs2 & "//" & rs2.Fields("id")
'Debug.Print "[外"; ii & "-内"; tt & "=" & idbs; "]" & "父节点:bm" & ii & "a" & Rs2.Fields("b1"), "下一父节点:bm" & ii + 1 & "a" & (Rs2.Fields("id"))
Set xNode = TreeView1.Nodes.Add("bm" & ii & "a" & rs2.Fields("b1"), tvwChild)
'xNode.Expanded = True
xNode.Key = "bm" & ii + 1 & "a" & (rs2.Fields("id"))
xNode.Tag = rs2.Fields("id")
xNode.Text = rs2.Fields("bm")
xNode.Image = 1
xNode.SelectedImage = 2
rs2.MoveNext
Wend
Else
'MsgBox idbsi(tt)
End If
Next tt
idbs = idbs2
Next ii
Private Sub TreeView1_DblClick()
If mNodeClick = 1 Then Exit Sub
MsgBox TreeView1.Nodes.Item(TreeView1.SelectedItem.Index).tag
Unload Me
End Sub
这样不行
#2
.Tag 并不是只能放rs2.Fields("id")这一个东西,东西复杂就弄propertybag 简单点的就直接”当前节点ID|上一节点ID“,然后通过上一级节点ID找到上一节点,一级一级往上找就是了,这么简单的东西自己发挥一下呗
#3
可是有时候要获得下一级的节点的某个值,又如点击a1得到a2的tag,点击c1得到c2的tag。
#4
如何得到当前节点所在所有节点对应的tag(不是text),不会。求高手。
#5
父节点的父节点:TreeView1.SelectedItem.Parent.Parent
父节点的父节点的父节点:TreeView1.SelectedItem.Parent.Parent..Parent
……
子节点:TreeView1.SelectedItem.Child
子节点的子节点:TreeView1.SelectedItem.Child.Child
子节点的子节点的子节点:TreeView1.SelectedItem.Child.Child.Child
……
Private Sub Form_Load()
Dim tnode As Node
Set tnode = TreeView1.Nodes.Add
tnode.Text = "0"
tnode.Key = "n0"
tnode.Expanded = True
Dim xx As Long
For xx = 1 To 10
Set tnode = TreeView1.Nodes.Add("n" & (xx - 1), tvwChild, "n" & xx, xx)
tnode.Expanded = True
Next
End Sub
Private Sub TreeView1_Click()
On Error Resume Next
Dim tnode As Node
Set tnode = TreeView1.SelectedItem.Parent
If Err.Number <> 0 Then
MsgBox "无父节点"
Err.Clear
Else
MsgBox "父节点是" & tnode.Text
End If
Set tnode = TreeView1.SelectedItem.Child
If Err.Number <> 0 Then
MsgBox "无子节点"
Err.Clear
Else
MsgBox "子节点是" & tnode.Text
End If
End Sub
#6
#7
父子节点那些我明白,但这个依然没有解决,可能是我没能说清楚我的目的?
我的目的是:无论这树有多少个节点,点击任意一个节点,都可以此节点对应的树的第2级节点的那个的tag,如点击a1得到a2的tag,点击c8也是得到c2的tag,这样。
谢谢高手了。
我的目的是:无论这树有多少个节点,点击任意一个节点,都可以此节点对应的树的第2级节点的那个的tag,如点击a1得到a2的tag,点击c8也是得到c2的tag,这样。
谢谢高手了。
#8
A 第0层
a1 第1层
a2 第2层
a3 第3层
a4 第4层
B 第0层
b1 第1层
b2 第2层
b3 第3层
b4 第4层
……
定义层数,根节点层数为0,其余节点层数等于父节点层数+1,层数值在添加Node的时候存到Node的.tag属性里面,具体方法见#2楼,从.SelectedItem.tag取当前节点的层数,循环.parent取父节点、父父节点、父父父节点一直取到.tag属性里面层数=2的节点或者循环.child取子节点、子子节点、子子子节点一直取到.tag属性里面层数=2的节点。
方法在#2、#5楼不都告诉你了,你就不知道自己动点脑子变通一下
a1 第1层
a2 第2层
a3 第3层
a4 第4层
B 第0层
b1 第1层
b2 第2层
b3 第3层
b4 第4层
……
定义层数,根节点层数为0,其余节点层数等于父节点层数+1,层数值在添加Node的时候存到Node的.tag属性里面,具体方法见#2楼,从.SelectedItem.tag取当前节点的层数,循环.parent取父节点、父父节点、父父父节点一直取到.tag属性里面层数=2的节点或者循环.child取子节点、子子节点、子子子节点一直取到.tag属性里面层数=2的节点。
方法在#2、#5楼不都告诉你了,你就不知道自己动点脑子变通一下