Foxtable(狐表)用户栏目专家坐堂 → bug,BuildTree,排序以后,生成不正确


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

主题:bug,BuildTree,排序以后,生成不正确

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
bug,BuildTree,排序以后,生成不正确  发帖心情 Post By:2014/4/21 23:12:00 [只看该作者]

 排序以后,生成的树,就不是想要的结果了。

 

 这个是bug吗?

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:buildtree_bug.foxdb


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


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

 up一下。

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


加好友 发短信
等级:五尾狐 帖子:1172 积分:8418 威望:0 精华:0 注册:2012/10/29 20:09:00
  发帖心情 Post By:2014/4/22 6:56:00 [只看该作者]

顶一下,希望尽快测试解决。

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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2014/4/22 7:40:00 [只看该作者]

呵呵,小事一桩,何劳狐爸大驾:

 

tv.BuildTree(dt,s.Replace("年龄|","").Replace("|年龄",""),"","序号,性别")

 

 

更可靠放心点:

 

If s.Contains("性别") Then
     tv.BuildTree(dt,s.Replace("年龄|","").Replace("|年龄",""),"","序号,性别")
Else
     tv.BuildTree(dt,s.Replace("年龄|","").Replace("|年龄",""),"","序号")
End If

[此贴子已经被作者于2014-4-22 7:44:31编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2014/4/22 8:10:00 [只看该作者]

呵呵,非bug,多层目录树,需要给每一层指定排序列,所以代码应该这样:

e.Form.Controls("TreeView1").buildTree(DataTables("表A"), "第一列|第二列|第三列", "", "第一列,第二列,第五列")

 

也就是同公司,同性别的,再按年龄排序。

 

 

[此贴子已经被作者于2014-4-22 8:20:54编辑过]

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


加好友 发短信
等级:五尾狐 帖子:1172 积分:8418 威望:0 精华:0 注册:2012/10/29 20:09:00
  发帖心情 Post By:2014/4/22 8:17:00 [只看该作者]

上班后,按各位老师修改意见,好好试下。。。

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


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

 

原来是酱紫

 

 

[此贴子已经被作者于2014-4-22 9:11:05编辑过]

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


加好友 发短信
等级:五尾狐 帖子:1172 积分:8418 威望:0 精华:0 注册:2012/10/29 20:09:00
  发帖心情 Post By:2014/4/22 13:17:00 [只看该作者]

反复试了下,终于明白些:排序的字段、字段排列的顺序,要根据所选择筛选的目录树列表项目名、项目名对应的节点在目录树的层级来确定,不能有差错,否则就会出现显示不对的情形。具体来说就是要对“主管司法局”、“法律服务所”、“性别”、“年龄”、“姓名”五个列表项目进行不同的排位组合,然后再根据这个排位组合来确定要排序的字段,比如其中一种: tv.BuildTree(dt,“主管司法局|法律服务所|性别|年龄|姓名”,"","序号,法律服务所,性别")这种写法显示就正确,但如写成 tv.BuildTree(dt,“主管司法局|法律服务所|性别|年龄|姓名”,"","序号,性别")则会显示错误。这有一个问题,要穷尽这几个列表项目在目录树中的节点位置顺序,来确定后面用来排序的字段名称和顺序,这个是不是有点麻烦呵,有没有简便点的写法?

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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2014/4/22 14:10:00 [只看该作者]

你的目录树列,和排序列都有点特殊:

一、因为年龄列复杂,为了简便,先把年龄列排除。

二、主管司法局列要按序号排序。

一般情况要比这个特例简单多了。

下面的代码是这个例子通用的。

 

If s.Contains("主管司法局") Then
     tv.BuildTree(dt,s.Replace("年龄|","").Replace("|年龄",""),"",s.Replace("年龄|","").Replace("|年龄","").Replace("主管司法局","序号").Replace("|",","))

Else
     tv.BuildTree(dt,s.Replace("年龄|","").Replace("|年龄",""),"",s.Replace("年龄|","").Replace("|年龄","").Replace("|",","))

End If


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


加好友 发短信
等级:五尾狐 帖子:1172 积分:8418 威望:0 精华:0 注册:2012/10/29 20:09:00
  发帖心情 Post By:2014/4/22 14:24:00 [只看该作者]

哦。好的。也想麻烦你把年龄也考虑进去下,虽然复杂,但却是比较有用的,谢谢!

 回到顶部