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


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

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

帅哥哟,离线,有人找我吗?
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编辑过]

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


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

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

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


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

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

 回到顶部
帅哥哟,离线,有人找我吗?
jygyyl
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

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


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

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

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


加好友 发短信
等级:一尾狐 帖子:463 积分:4163 威望:0 精华:0 注册:2011/4/5 16:54:00
回复甜大师  发帖心情 Post By:2014/9/15 17:12:00 [显示全部帖子]

一楼的代码是逛逛大师给的,可以实现目录树录入、筛选等功能。但需添加外部数据表

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


加好友 发短信
等级:一尾狐 帖子:463 积分:4163 威望:0 精华:0 注册:2011/4/5 16:54:00
回复:(有点甜) 参考11楼,改一下。  发帖心情 Post By:2014/9/15 17:43:00 [显示全部帖子]

我可能没把意思表达清楚,您的代码和逛逛大师的代码都能生成目录树,同样都要设置数据源并添加所需的数据表。如不添加数据表则提示“找不到XXX表。
我的想法是只设置外部数据源,不添加数据表,用后台sql数据生成目录树。不知有无办法实现?

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


加好友 发短信
等级:一尾狐 帖子:463 积分:4163 威望:0 精华:0 注册:2011/4/5 16:54:00
[求助]双击目录树节点代码  发帖心情 Post By:2014/9/16 11:34:00 [显示全部帖子]

谢谢甜大师,目录树搞定了!双击目录树节点输入数据的代码又不会了,还望赐教!
下面代码可以输入编码,如何同时在目录树下拉单元输入”名称“?
Tables("xx“).Current("编码")=e.Node.Name
e.Form.DropDownBox.CloseDropdown

帮助中通用代码如何修改应用?

If e.Node.Level = 1 Then '如果单击的是第二层节点
    Dim tr As Row
    Dim dr As DataRow = e.Node.DataRow '获取生成此节点的DataRow
    If e.Form.DropTable IsNot Nothing Then '如果下拉窗口是从表中打开
        tr = e.Form.DropTable.Current '获取此表的当前行
    Else '如果下拉窗口是通过DropdownBox打开
        Dim nm As String = e.Form.DropDownBox.BindingField '获取绑定的字段
        nm = nm.Split(".")(0) '获取绑定的表名
        tr = Tables(nm).Current '获取此表的当前行
    End If
    tr("省市") = dr("省市")
    tr("县市") = dr("县市")
    tr("区号") = dr("区号")
    tr("邮编") = dr("邮编")
    e.Form.DropDownBox.Value = tr("县市") '这行不是多余的,省略此行,无法在表中正常使用此下拉窗口输入数据.
    e.Form.DropDownBox.CloseDropdown()

End
If

[此贴子已经被作者于2014-9-16 11:39:37编辑过]

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


加好友 发短信
等级:一尾狐 帖子:463 积分:4163 威望:0 精华:0 注册:2011/4/5 16:54:00
搞定了,谢谢甜大师的帮助!  发帖心情 Post By:2014/9/16 11:47:00 [显示全部帖子]

搞定了,谢谢甜大师的热心帮助!

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


加好友 发短信
等级:一尾狐 帖子:463 积分:4163 威望:0 精华:0 注册:2011/4/5 16:54:00
[求助]请教甜老师关于目录树双击节点代码问题  发帖心情 Post By:2014/9/18 8:59:00 [显示全部帖子]

甜老师,早上好!请教个问题:以下代码能否加入判断,实现:如果在"W01"表的列“HGB003”打开目录树执行下面代码;

Tables("W01").Current("GB003")=e.Node.Name
Tables("W01").Current("HGB003")=e.Node.Text
e.Form.DropDownBox.Value = e.Node.Text
e.Form.DropDownBox.CloseDropdown

如果在"W01"表的列“HGB005”打开目录树则执行下面代码;

Tables("W01").Current("GB005")=e.Node.Name
Tables("W01").Current("HGB005")=e.Node.Text
e.Form.DropDownBox.Value = e.Node.Text
e.Form.DropDownBox.CloseDropdown

 回到顶部
总数 12 1 2 下一页