以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]自动生成树的问题  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=129336)

--  作者:xndd
--  发布时间:2018/12/26 14:11:00
--  [求助]自动生成树的问题

我有一张数据表,自动生成树,但是发现变成这样,原因是LB列用了表的数据字典,如何显示内容,而不是用值呢?

 


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

 

 


图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2018/12/26 14:11:40编辑过]

--  作者:有点甜
--  发布时间:2018/12/26 14:22:00
--  

读取数据字典的值,循环目录树的节点,修改目录树节点值,即可

 

Dim dmp = Tables("表A").cols("第二列").DataMap
msgbox(dmp("1"))
msgbox(dmp("2"))


--  作者:xndd
--  发布时间:2018/12/26 15:01:00
--  

Dim dmp = Tables("数据字典表").cols("LB").DataMap
MESSAGEBOX.Show(dmp("1"))

 

显示为空

 


图片点击可在新窗口打开查看此主题相关图片如下:3.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2018/12/26 15:01:36编辑过]

--  作者:有点甜
--  发布时间:2018/12/26 17:37:00
--  

如果是数值列,试试改成

 

Dim dmp = Tables("数据字典表").cols("LB").DataMap
MESSAGEBOX.Show(dmp(1))

 


--  作者:xndd
--  发布时间:2018/12/26 22:11:00
--  
不行,只能这样了:
Dim obj = Tables("数据字典表").Cols("LB").DataMap
For Each key As object In obj.keys
    output.show(key & " " & obj(key))
Next


--  作者:有点甜
--  发布时间:2018/12/26 22:36:00
--  

那你的key显示什么?key的类型是数值还是字符?

 

或者,你做个对应的实例发上来测试。


--  作者:xndd
--  发布时间:2018/12/26 22:45:00
--  
这样实现了,感觉效率低下

\'基础设置
Dim obj = Tables("数据字典表").Cols("LB").DataMap
Dim sjzdb1 As New List(Of String)
For Each key As object In obj.keys
    sjzdb1.add(obj(key))
Next
\'自动生成树
Dim tv1 As WinForm.TreeView = e.Form.Controls("TreeView1")
tv1.BuildTree("数据字典表", "LB|FLMC")
\'遍历目录树,替换节点值
Dim a As Integer
a = 0
For Each nd As Object In tv1.Nodes
    If String.Compare(cstr(nd.text),cstr(a),False) Then
        nd.text = sjzdb1(a)
        messagebox.Show(nd.text)
    End If
    a += 1
Next



--  作者:有点甜
--  发布时间:2018/12/26 23:09:00
--  
做个例子发上来测试吧,你第一步肯定是不需要的。
--  作者:xndd
--  发布时间:2018/12/27 9:21:00
--  

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

我发现我这样做有问题:点击公共可以展现;点击行政变成显示人事了。我循环体累计值有什么不对?

关键是效率地下啊。谢谢。麻烦甜版看看。


--  作者:有点甜
--  发布时间:2018/12/27 9:39:00
--  

\'自动生成树
Dim tv1 As WinForm.TreeView = e.Form.Controls("TreeView1")
tv1.BuildTree("数据字典表", "LB|FLMC")
\'遍历目录树,替换节点值

Dim dmp = Tables("数据字典表").Cols("LB").DataMap
For Each nd As Object In tv1.Nodes
    nd.text = dmp(cdbl(nd.name))
Next