Foxtable(狐表)用户栏目专家坐堂 → [求助]目录树问题


  共有2751人关注过本帖树形打印复制链接

主题:[求助]目录树问题

帅哥哟,离线,有人找我吗?
jygyyl
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:463 积分:4163 威望:0 精华:0 注册:2011/4/5 16:54:00
[求助]目录树问题  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/9/15 15:32:00 [只看该作者]

可以

 

Dim cmd As New SQLCommand
Dim
dt As DataTable
cmd.ConnectionName =
"行政区域"
cmd.CommandText =
"SELECT DISTINCT 省市 From {行政区域}"
dt = cmd.ExecuteReader


 回到顶部
帅哥哟,离线,有人找我吗?
jygyyl
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:463 积分:4163 威望:0 精华:0 注册:2011/4/5 16:54:00
回复:(有点甜)可以 Dim cmd As New SQLCo...  发帖心情 Post By:2014/9/15 15:53:00 [只看该作者]

求甜大师帮忙修改一下我的代码,谢谢!

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/9/15 15:57:00 [只看该作者]


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/9/15 16:01:00 [只看该作者]

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("全部")  '这么大的数据量,就不要加全部了
Dim drs As List(of DataRow)
drs = dt.Select("[parentid] is null")
For Each dr As DataRow In drs
     nd = tr.Nodes.Add(dr("objid"),dr("objjc"))
     Functions.Execute("AddChildren",nd,dt)
Next
tr.ResumeRedraw()


 回到顶部
帅哥哟,离线,有人找我吗?
jygyyl
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:463 积分:4163 威望:0 精华:0 注册:2011/4/5 16:54:00
提示错误  发帖心情 Post By:2014/9/15 16:25:00 [只看该作者]

提示“未找到列 [parentid]。”不知道改哪?

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/9/15 16:30:00 [只看该作者]

以下是引用jygyyl在2014-9-15 16:25:00的发言:
提示“未找到列 [parentid]。”不知道改哪?

 

那你的代码就全部写错了。

 

例子发上来,不清楚你表格的结构是什么。


 回到顶部
帅哥哟,离线,有人找我吗?
jygyyl
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:463 积分:4163 威望:0 精华:0 注册:2011/4/5 16:54:00
回复甜大师  发帖心情 Post By:2014/9/15 16:43:00 [只看该作者]

 数据表如下,代码在一楼(可以生产目录树,但必须添加外部数据表。我的项目类似数据表近100个,不想全部添加),求大师指点!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:shuju.zip


[此贴子已经被作者于2014-9-15 16:46:35编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/9/15 16:46:00 [只看该作者]

 你要的,就是4楼那个啊

 

http://www.foxtable.com/help/index.html?n=2502.htm

 


 回到顶部
帅哥哟,离线,有人找我吗?
jygyyl
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:463 积分:4163 威望:0 精华:0 注册:2011/4/5 16:54:00
回复:(有点甜) 你要的,就是4楼那个啊 ...  发帖心情 Post By:2014/9/15 16:51:00 [只看该作者]

编码规则不一样,我的编码是15位,前6位是两位递进,后9位是3位递进。不会套用。

 回到顶部
总数 23 1 2 3 下一页