Foxtable(狐表)用户栏目专家坐堂 → BuildTree功能自动过滤了空值问题


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

主题:BuildTree功能自动过滤了空值问题

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


加好友 发短信
等级:三尾狐 帖子:688 积分:4903 威望:0 精华:0 注册:2013/10/27 17:14:00
BuildTree功能自动过滤了空值问题  发帖心情 Post By:2015/7/6 15:35:00 [只看该作者]

使用BuildTree功能生成筛选目录树过程中自动过滤了空值,全部取有值的记录生成最终的目录树

 

看起来,目录树很好看,但一点也不中用,客户可能更关注空值

 

你总不能一个筛选目录树,显示所有数据有300条,你把下面的所有显示项全部选中才280行的吧

 

官方也放会说,你限制用户录入所有的数据,不能为空。 不过这个显然不行,有时有些字段字符必定为空值,有些数字必须为0 ,有些日期必须为空

 

值 为空值在有时是合法的,难道用了FT就变得非法的了

 

筛选目录树必须能处理空值 ? 如何处理。


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/7/6 15:38:00 [只看该作者]

 你可以用sql语句,把空值替换成一个字符,如

 

select iif(第一列 is null, '空值', 第一列)

 

 然后再生成dt,再生成目录树。


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


加好友 发短信
等级:三尾狐 帖子:688 积分:4903 威望:0 精华:0 注册:2013/10/27 17:14:00
  发帖心情 Post By:2015/7/6 15:46:00 [只看该作者]

这方案显然不好

 

如果要这样还为如先按官方的做好了,再用程序判断有无空值,有则自动加上。只是多级筛选的时候有点麻烦

 


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


加好友 发短信
等级:三尾狐 帖子:688 积分:4903 威望:0 精华:0 注册:2013/10/27 17:14:00
  发帖心情 Post By:2015/7/6 15:49:00 [只看该作者]

只不过如此一来,还不如自己写代码生成目录树了,官方的功能也就只能睡觉去了

 


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/7/6 15:56:00 [只看该作者]

非递归,代码

 

Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim Nd = tr.Nodes.Add("全部内容")

Dim dt As DataTable = DataTables("表a")
Dim cs As String = "第一列|第二列"
Dim nds As new List(Of WinForm.TreeNode)
For i As Integer = 0 To 3
    nds.Add(nd)
Next
For Each arys As String() In dt.GetValues(cs, "", cs.Replace("|", ","))
    Dim flag As Boolean = False
    For i As Integer = 0 To arys.Length - 1
        If nds(i+1).Name <> arys(i) OrElse flag Then
            flag = True
            nds(i+1) = nds(i).Nodes.Add(arys(i))
        End If
    Next
Next


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


加好友 发短信
等级:三尾狐 帖子:688 积分:4903 威望:0 精华:0 注册:2013/10/27 17:14:00
  发帖心情 Post By:2015/7/6 17:54:00 [只看该作者]

这段 代码 测试时就产生多个相同的目录树,然后每点一次就加了一个目录树

 

空值 什么都不显示,最好显示为<空值>

 

日期型数据:显示时带时间了00000


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/7/6 17:56:00 [只看该作者]

 呃,你可以替换掉arys(i)的值,想怎么处理都行。

 

 关键代码 nds(i+1) = nds(i).Nodes.Add(arys(i))


 回到顶部