以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- BuildTree功能自动过滤了空值问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=71167) |
-- 作者:supwork -- 发布时间:2015/7/6 15:35:00 -- BuildTree功能自动过滤了空值问题 使用BuildTree功能生成筛选目录树过程中自动过滤了空值,全部取有值的记录生成最终的目录树
看起来,目录树很好看,但一点也不中用,客户可能更关注空值
你总不能一个筛选目录树,显示所有数据有300条,你把下面的所有显示项全部选中才280行的吧
官方也放会说,你限制用户录入所有的数据,不能为空。 不过这个显然不行,有时有些字段字符必定为空值,有些数字必须为0 ,有些日期必须为空
值 为空值在有时是合法的,难道用了FT就变得非法的了
筛选目录树必须能处理空值 ? 如何处理。 |
-- 作者:大红袍 -- 发布时间:2015/7/6 15:38:00 -- 你可以用sql语句,把空值替换成一个字符,如
select iif(第一列 is null, \'空值\', 第一列)
然后再生成dt,再生成目录树。 |
-- 作者:supwork -- 发布时间:2015/7/6 15:46:00 -- 这方案显然不好
如果要这样还为如先按官方的做好了,再用程序判断有无空值,有则自动加上。只是多级筛选的时候有点麻烦
|
-- 作者:supwork -- 发布时间:2015/7/6 15:49:00 -- 只不过如此一来,还不如自己写代码生成目录树了,官方的功能也就只能睡觉去了
|
-- 作者:大红袍 -- 发布时间:2015/7/6 15:56:00 -- 非递归,代码
Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1") Dim dt As DataTable = DataTables("表a") |
-- 作者:supwork -- 发布时间:2015/7/6 17:54:00 -- 这段 代码 测试时就产生多个相同的目录树,然后每点一次就加了一个目录树
空值 什么都不显示,最好显示为<空值>
日期型数据:显示时带时间了00000 |
-- 作者:大红袍 -- 发布时间:2015/7/6 17:56:00 -- 呃,你可以替换掉arys(i)的值,想怎么处理都行。
关键代码 nds(i+1) = nds(i).Nodes.Add(arys(i)) |