以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  动态生成目录树时,如何更改节点标题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=25664)

--  作者:jinruan
--  发布时间:2012/11/14 5:09:00
--  动态生成目录树时,如何更改节点标题
动态生成目录树时,如休更改节点标题,如图:
图片点击可在新窗口打开查看此主题相关图片如下:目录树结点显示标题-20121114.jpg
图片点击可在新窗口打开查看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:目录树节点标题显示问题.rar


[此贴子已经被作者于2012-11-14 5:12:42编辑过]

--  作者:sgs
--  发布时间:2012/11/14 8:04:00
--  

楼主用的是外部数据库?

看图片貌似是动态加载树,按理说你的要求需要编码用目录树来实现

 

Dim cmd As New SQLCommand
cmd.Connection Name = "JRRJ"
Dim dt As DataTable
cmd.CommandText = "Select a.客户id,a.销售单号,b.客户名称 From {销售订单} a,客户资料 b where a.客户id = b.客户id and a.订单日期 = \'" & d1 & "\' "
dt = cmd.ExecuteReader()
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv.Nodes.Add("加载所有数据",0)
For Each dr As DataRow In dt.DataRows
    Dim tnd As WinForm.TreeNode = trv.Nodes.Add(dr("客户id"),dr("客户id") & dr("客户名称"))
    For Each trvstr As String In dt.GetUniqueValues("客户id = \'"& tnd.name &"\'","销售单号")
        tnd.Nodes.Add(trvstr,trvstr)
    Next
Next

[此贴子已经被作者于2012-11-14 8:06:50编辑过]

--  作者:狐狸爸爸
--  发布时间:2012/11/14 8:53:00
--  

还有一个简单且通用的办法:

 

http://www.foxtable.com/help/topics/2689.htm

http://www.foxtable.com/help/topics/2690.htm

 

\'按常规生成目录树

For Each nd AS WinForm.TreeNode In Trv.AllNodes

    If  nd.DataRow IsNot Nothing Then

          nd.Text = nd.Datarow("客户ID") & "客户名称"

    End If

Next

 


--  作者:lin_hailun
--  发布时间:2012/11/14 9:16:00
--  
 在二楼的基础上改的。狐爸的方式不适合不加载的外部表。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:jr2012.foxdb


--  作者:jinruan
--  发布时间:2012/11/14 9:43:00
--  
参考资料lin_hailun与sgs所提示方法在:ComboBox1 的SelectedIndexChanged事件中加入:
Dim cmd As New SQLCommand
cmd.Connection Name = "JRRJ"
Dim dt As DataTable
cmd.CommandText = "Select a.客户id,a.销售单号,b.客户名称 From {销售订单} a,客户资料 b where a.客户id = b.客户id and a.订单日期 = \'" & d1 & "\' "
dt = cmd.ExecuteReader()
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv.Nodes.Add("加载所有数据",0)
For Each dr As DataRow In dt.DataRows
    Dim tnd As WinForm.TreeNode = trv.Nodes.Add(dr("客户id"),dr("客户id") & dr("客户名称"))
    For Each trvstr As String In dt.GetUniqueValues("客户id = \'"& tnd.name &"\'","销售单号")
        tnd.Nodes.Add(trvstr,trvstr)
    Next
图片点击可在新窗口打开查看此主题相关图片如下:目录树结点显示标题-20121114-02.jpg
图片点击可在新窗口打开查看

Next
在有重复记录,如下图:


--  作者:jinruan
--  发布时间:2012/11/14 9:51:00
--  

根据狐爸方法:

For Each nd AS WinForm.TreeNode In Trv.AllNodes

    If  nd.DataRow IsNot Nothing Then

        if nd.AllNodes.Count = 0 then

          nd.Text = nd.Datarow("客户ID") & nd.Datarow("客户名称")

       end if 

    End If

Next

如下图:



图片点击可在新窗口打开查看此主题相关图片如下:目录树结点显示标题-20121114-03.jpg
图片点击可在新窗口打开查看

[此贴子已经被作者于2012-11-14 9:51:41编辑过]

--  作者:lin_hailun
--  发布时间:2012/11/14 9:52:00
--  
 清除原先的节点

trv.Nodes.Clear

--  作者:jinruan
--  发布时间:2012/11/14 10:00:00
--  
5楼处理 方法中加入清除原先的节点后,客户还是那样重复的
--  作者:jinruan
--  发布时间:2012/11/14 10:06:00
--  

http://www.foxtable.com/help/topics/0888.htm


有如下处理方法,这个方法在这里在怎样用


在窗口中插入一个、一个按钮,将按钮的Click事件代码设为:

Dim tr As WinForm.TreeView
Dim
 nd As WinForm.TreeNode
tr = Forms(
"窗口1").Controls("TreeView1")
nd = Tr.Nodes.Add(
"Root1","根节点一")
nd.Nodes.Add(
"Sub1","子节点一")
nd.Nodes.Add(
"Sub2","子节点二")
nd = Tr.Nodes.Add(
"Root2","根节点二")
nd.Nodes.Add(
"Sub3","子节点三")
nd.Nodes.Add(
"Sub4","子节点四")

运行时单击按钮,会生成


--  作者:hanxuntx
--  发布时间:2012/11/14 10:09:00
--  

http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=25239&page=2

看看这个行不