以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]目录树问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=56924) |
-- 作者:jygyyl -- 发布时间:2014/9/15 15:30:00 -- [求助]目录树问题 请教个关于外部数据表用递归函数生成目录树的问题: 有没有办法在不添加外部数据表的情况下,用递归函数生成目录树? 我的自定义函数AddChildren内容如下: Dim nd As WinForm.TreeNode = args(0) Dim dt As DataTable = args(1) Dim drs As List(of DataRow) drs = dt.Select("[parentid] = \'" & nd.name & "\'") For Each dr As DataRow In drs Dim cd As Winform.TreeNode = nd.Nodes.Add(dr("objname"),dr("objjc")) Functions.Execute("AddChildren",cd,dt) Next 自定义函数“数据提取”的内容如下: \'做一个通用的数据提取函数 Dim sql As String = Args(0) \'sql语句 Dim cmd As New SQLCommand Dim dt As DataTable cmd.C cmd.CommandText = sql dt = cmd.ExecuteReader() Return dt 下拉窗口代码如下: Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1") Dim nd As WinForm.TreeNode Dim sql As String = "Select a.objid, a.objjc, (Select Count(objid) FROM D020 WHERE parentid = a.objid) As 下级数 " _ & " FROM D020 As a WHERE a.objtype = 1 " Dim dt As DataTable = Functions.Execute("wis数据提取",sql) tr.StopRedraw() tr.Nodes.Clear \'tr.Nodes.Add("全部") \'这么大的数据量,就不要加全部了 For Each dr As DataRow In dt.datarows nd = tr.Nodes.Add(dr("objid"),dr("objjc")) If dr("下级数") > 0 Then nd.Nodes.Add("空") End If Next tr.ResumeRedraw() [此贴子已经被作者于2014-9-15 15:38:46编辑过]
|
-- 作者:有点甜 -- 发布时间:2014/9/15 15:32:00 -- 可以
Dim cmd As New SQLCommand |
-- 作者:jygyyl -- 发布时间:2014/9/15 15:53:00 -- 回复:(有点甜)可以 Dim cmd As New SQLCo... 求甜大师帮忙修改一下我的代码,谢谢! |
-- 作者:Bin -- 发布时间:2014/9/15 15:57:00 -- http://www.foxtable.com/help/topics/2502.htm |
-- 作者:有点甜 -- 发布时间:2014/9/15 16:01:00 -- Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
|
-- 作者:jygyyl -- 发布时间:2014/9/15 16:25:00 -- 提示错误 提示“未找到列 [parentid]。”不知道改哪? |
-- 作者:有点甜 -- 发布时间:2014/9/15 16:30:00 -- 以下是引用jygyyl在2014-9-15 16:25:00的发言:
提示“未找到列 [parentid]。”不知道改哪?
那你的代码就全部写错了。
例子发上来,不清楚你表格的结构是什么。 |
-- 作者:jygyyl -- 发布时间:2014/9/15 16:43:00 -- 回复甜大师 数据表如下,代码在一楼(可以生产目录树,但必须添加外部数据表。我的项目类似数据表近100个,不想全部添加),求大师指点! [此贴子已经被作者于2014-9-15 16:46:35编辑过]
|
-- 作者:有点甜 -- 发布时间:2014/9/15 16:46:00 -- 你要的,就是4楼那个啊
http://www.foxtable.com/help/index.html?n=2502.htm
|
-- 作者:jygyyl -- 发布时间:2014/9/15 16:51:00 -- 回复:(有点甜) 你要的,就是4楼那个啊 ... 编码规则不一样,我的编码是15位,前6位是两位递进,后9位是3位递进。不会套用。 |