Foxtable(狐表)用户栏目专家坐堂 → 如何固定目录树中节点的位置


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

主题:如何固定目录树中节点的位置

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


加好友 发短信
等级:四尾狐 帖子:976 积分:8521 威望:0 精华:0 注册:2012/2/9 16:35:00
如何固定目录树中节点的位置  发帖心情 Post By:2012/9/8 14:47:00 [只看该作者]

各位老师,

 

我在流程设置的目录树中增加了表单的流程,确定后设置是保存在表中的,保存前的顺序如上下图

 


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20120908001.jpg
图片点击可在新窗口打开查看

 

 
图片点击可在新窗口打开查看此主题相关图片如下:qq截图20120908143902.jpg
图片点击可在新窗口打开查看


下次重新打开时流程显示的顺序却改变了,请问要固定流程的顺序是不是表中还要增加一列顺序列?

代码要怎么写?

谢谢!


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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/9/8 15:28:00 [只看该作者]

  呃,这个当然要增加一列保存位置啦。

在确定按钮的点击事件中,遍历所有的节点,然后根据当前节点、父节点、爷节点....查找到所在的行(能唯一就行),修改位置值。

构建树的时候,加入位置列排序。

具体例子自己做吧。

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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/9/8 15:30:00 [只看该作者]

Dim tv As WinForm.TreeView
tv =e.Form.Controls("TreeView1")
tv.BuildTree("你的表", "表名|流程", "", "表名,[_Identify]")

 

用_Identify没有办法调整位置,最好启用了插入行的功能,那么就可以:

 

Dim tv As WinForm.TreeView
tv =e.Form.Controls("TreeView1")
tv.BuildTree("你的表", "表名|流程", "", "表名,[_SortKey")

 

你窗口中的上移下移按钮,还得交换上下两个节点对应的行的_SortKey值。

 

看看这里,有个Sort参数,很多人都忽略了,连我找个写帮助的人也忽略了:

http://www.foxtable.com/help/topics/0893.htm

 

 

[此贴子已经被作者于2012-9-8 15:41:53编辑过]

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


加好友 发短信
等级:四尾狐 帖子:976 积分:8521 威望:0 精华:0 注册:2012/2/9 16:35:00
  发帖心情 Post By:2012/9/8 16:01:00 [只看该作者]

好的,谢谢二位,我琢磨琢磨看能不能搞定

 

谢谢!


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


加好友 发短信
等级:四尾狐 帖子:976 积分:8521 威望:0 精华:0 注册:2012/2/9 16:35:00
  发帖心情 Post By:2012/9/8 16:42:00 [只看该作者]

再请教一下狐爸,换上下两个节点对应的行的_SortKey值的代码要怎么写啊?

 

谢谢!


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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/9/8 16:55:00 [只看该作者]

假定要交换dr1和dr2两行的SortKey的值

 

dim v as decimal

v = dr1("_SortKey")

dr1("_SortKey") = dr2("_SortKey")

dr2("_SortKey") = v

 


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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/9/8 16:58:00 [只看该作者]

 呃,狐爸,问题应该是查到对应行吧。

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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/9/8 17:06:00 [只看该作者]

呵呵,是的,不过这个他应该能搞定的,因为一楼的图片表明他都设计好了授权窗口的。

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


加好友 发短信
等级:四尾狐 帖子:976 积分:8521 威望:0 精华:0 注册:2012/2/9 16:35:00
  发帖心情 Post By:2012/9/10 17:17:00 [只看该作者]

我用了如下代码:没有什么出错提示,

 

Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim nd As WinForm.TreeNode = tr.SelectedNode
If nd.Level = 1 Then
    If nd IsNot Nothing Then
       
        Dim id As Integer = nd.index
        Dim nd2 As WinForm.TreeNode
        nd2 = nd.ParentNode.Nodes(id-1)
        Dim dr1 As DataRow = DataTables("单据流程").Find("表名 = '" & nd.ParentNode.text & "' And 流程 = '" & nd.text & "'")
        Dim dr2 As DataRow = DataTables("单据流程").Find("表名 = '" & nd2.ParentNode.text & "' And 流程 = '" & nd2.text & "'")
        If dr1 IsNot Nothing And dr2 IsNot Nothing Then
            MessageBox.Show(dr1("_SortKey"))
            MessageBox.Show(dr2("_SortKey"))
            Dim v As Integer
            v = dr1("_SortKey")
            dr1("_SortKey") = dr2("_SortKey")
            dr2("_SortKey") = v
        End If
        MessageBox.Show(dr1("_SortKey"))
        MessageBox.Show(dr2("_SortKey"))
        nd.MoveUp()
    End If
End If
tr.Select

 

用MessageBox.Show(dr1("_SortKey"))
   MessageBox.Show(dr2("_SortKey"))两次显示交换产后的值

但为什么移动后两个节点对应行的“_SortKey”并没有交换,?

 

谢谢!


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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/9/10 17:48:00 [只看该作者]

Dim v As Integer

 

改为:

 

Dim v As Decimal


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