以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  treeview来源数据是多值字段时,要怎么得到不重复的值  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=154007)

--  作者:aoc103
--  发布时间:2020/8/31 23:26:00
--  treeview来源数据是多值字段时,要怎么得到不重复的值
设计了一个商标表 其中有一个字段是 [适用规格] 这个是多值字段 用, 分隔 现在 我做了一个记录表 然后做了一个 TREEVIEW,现在需要用 [适用规格]这个字段当做分类源数据 如果是单值 就好办 可多值  不知道怎么分隔

Dim cmd As new SQLCommand
cmd.ConnectionName=("PAICHAN")
cmd.CommandText="S ELECT DISTINCT [适用规格] from {TBL_商标表}"
Dim dt As DataTable =cmd.ExecuteReader
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv.BuildTree(dt,"适用规格")
trv.Nodes.Insert("加载所有数据",0)

图片点击可在新窗口打开查看此主题相关图片如下:1598887290(1).png
图片点击可在新窗口打开查看
结果TREEVIEW里 直接简单粗暴的显示了 多值数据 希望像以下这样显示

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


[此贴子已经被作者于2020/8/31 23:27:57编辑过]

--  作者:有点蓝
--  发布时间:2020/9/1 8:44:00
--  
只能手工添加节点

Dim cmd As new SQLCommand
cmd.ConnectionName=("PAICHAN")
cmd.CommandText="S ELECT DISTINCT [适用规格] from {TBL_商标表}"
Dim dt As DataTable =cmd.ExecuteReader
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
dim lst as new list(of string)
for each dr as datarow in dt.datarows
for each s as string in dr("适用规格").split(",")
if lst.contains(s) = false then lst.add(s)
next
next
lst.sort
trv.Nodes.add("加载所有数据")
for each s as string in lst
trv.Nodes.add(s,s)
next

--  作者:aoc103
--  发布时间:2020/9/1 20:43:00
--  
非常感谢 代码可以用 现在发现另一个问题 在NodeMouseClick事件里原来的代码 单值  正常是这样的
Dim Filter As String
If e.node.Text = "加载所有数据" Then
    Filter = ""
Else
    Dim dr As DataRow = e.Node.DataRow
    Select Case e.Node.Level
        Case 0
            Filter ="[适用规格] = \'" & dr("适用规格") & "\'"
    End Select
End If

With DataTables("TBL_商标表")
     .LoadFilter = Filter \'设置加载条件 
    .LoadPage = 0 \'加载第一页
    .Load()
End With

这是用于 单值字段的 现在多值字段 这里请问要如何修改呢?


--  作者:有点蓝
--  发布时间:2020/9/1 21:37:00
--  
Dim Filter As String
If e.node.Text = "加载所有数据" Then
    Filter = ""
Else
    Select Case e.Node.Level
        Case 0
            Filter ="[适用规格] like \'%" & e.Node.text & "%\'"
    End Select
End If

--  作者:aoc103
--  发布时间:2020/9/1 23:03:00
--  
非常感谢