Foxtable(狐表)用户栏目专家坐堂 → 一个目录树操作实现问题


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

主题:一个目录树操作实现问题

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


加好友 发短信
等级:二尾狐 帖子:529 积分:4695 威望:0 精华:0 注册:2012/7/4 16:22:00
一个目录树操作实现问题  发帖心情 Post By:2014/1/24 13:06:00 [只看该作者]

我之前用VC开发的一个通讯录管理功能,包括分组目录(可以没有限制),最后是联系人。 数据库表是这样设计的

字段名

数据类型

是否为空

数据格式

备注

        NodeID

Integer

No PK

长整型

节点ID

        NodeName

varchar (120)

No

 

节点名称

        ParentID

Integer

No

长整型

父级编号

        NodeType

Integer

 

No

 

节点类型、0表示目录、1表示个人联系人信息


ParentID = -1 表示根节点,如果是目录然后通过递归调用方式,搜索每个父节点的子节点,加入到VC的目录树控件中。实现联系人分组及联系人
的树状列表信息。

用FoxTable来实现,我看了目录树例子,好像都不适合这样的应用,界面生成及数据库表结构如何设计? 请高人指点?

[此贴子已经被作者于2014-1-24 13:08:24编辑过]

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


加好友 发短信
等级:幼狐 帖子:172 积分:1914 威望:0 精华:0 注册:2012/6/6 17:08:00
  发帖心情 Post By:2014/1/24 13:19:00 [只看该作者]

Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv.GenerateTree(
"通讯录","级码","名称", ".")



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


加好友 发短信
等级:二尾狐 帖子:529 积分:4695 威望:0 精华:0 注册:2012/7/4 16:22:00
  发帖心情 Post By:2014/1/24 13:51:00 [只看该作者]

Foxtable目录的级码是1,1.1,1.1.1,1.1.1.1这样,这样我联系人的删除、修改、移动操作都非常麻烦,我之前的设计,只要删除、修改一下父节点的ID号就可以的。

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


加好友 发短信
等级:版主 帖子:1693 积分:12135 威望:0 精华:7 注册:2013/7/11 10:52:00
  发帖心情 Post By:2014/1/24 13:59:00 [只看该作者]

没有例子,不能测试

 

如下代码,试一下

 

’目录树的BeforeExpandNode 事件

 

Dim sql As String =  "Select  NodeID, NodeName ,NodeType  FROM 表名 WHERE ParentID = " & e.Node.Name
Dim cmd As new SQLCommand
cmd.ConnectionName = 数据源   ‘如果是外部表,就加上
Dim dt As DataTable
cmd.CommandText = sql
dt = cmd.ExecuteReader()
if dt Is NoThing Then Return
e.Sender.StopRedraw()
e.Node.Nodes.Clear
Dim nd As WinForm.TreeNode
For Each dr As DataRow In dt.DataRows
   nd = e.Node.Nodes.Add(dr("NodeID"),dr("NodeName"))
    If dr("NodeType") = 0 Then
        nd.Nodes.Add("")
    End If
Next
e.Sender.ResumeRedraw()

 


'控件窗口的AfterLoad  事件

Dim sql As String =  "Select  NodeID, NodeName  FROM 表名 WHERE ParentID = -1 "
Dim cmd As new SQLCommand
cmd.ConnectionName = 数据源   ‘如果是外部表,就加上
Dim dt As DataTable
cmd.CommandText = sql
dt = cmd.ExecuteReader()
if dt Is NoThing Then Return
Dim tv As WinForm.TreeView = e.Form.Controls("TreeView1") ‘实际的控件名
Dim nd As WinForm.TreeNode
tv.StopRedraw()
For Each dr As DataRow In dt.DataRows
   nd = tv.Nodes.Add(dr("NodeID"),dr("NodeName"))
   nd.Nodes.Add("")
Next
tv.ResumeRedraw()
tv.Select


 回到顶部