以文本方式查看主题 - 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) [此贴子已经被作者于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 -- 非常感谢 |