Foxtable(狐表)用户栏目专家坐堂 → 奇怪,为什么不能成生treeview


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

主题:奇怪,为什么不能成生treeview

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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/10/21 21:29:00 [显示全部帖子]

?不能作为通配符吧,你测试一下:

 

tr = e.Form.Controls("TreeView1")
dt2 = dt.Select(" [标题id] Like '??' ")
Messagebox.show(dt2.Count)

 

就会发现dt2的行数为0


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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/10/22 11:08:00 [显示全部帖子]

并非要用Select的,在命令窗口执行:

For Each dr As DataRow In DataTables("单位树").DataRows
    dr("标题id") = dr("标题id").Trim()
Next
For Each dr1 As DataRow In DataTables("单位树").DataRows
    If dr1("标题id").Length = 2 Then
        Output.Show(dr1("标题id"))
        For Each dr2 As DataRow In DataTables("单位树").DataRows
            If dr2("标题id").StartsWith(dr1("标题id")) AndAlso dr2("标题id").Length = 4  Then
                Output.Show(dr2("标题id"))
                For Each dr3 As DataRow In DataTables("单位树").DataRows
                    If dr3("标题id").StartsWith(dr2("标题id")) AndAlso dr3("标题id").Length = 6  Then
                        Output.Show(dr3("标题id"))
                    End If
                Next
            End If
        Next
    End If
Next

 

其实这一段多余:

For Each dr As DataRow In DataTables("单位树").DataRows
    dr("标题id") = dr("标题id").Trim()
Next
之所以加上,是因为你输入不够严谨,标题ID后面都输入了空格的,01的长度不是2,而是3,后面有空格了。

[此贴子已经被作者于2010-10-22 11:08:56编辑过]

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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/10/22 12:31:00 [显示全部帖子]

你就按照上面的代码,给他来个10级,代码也没有多长的。

10级的目录够深了。


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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/10/22 12:54:00 [显示全部帖子]

这是一个任意层数的,不过一般用户理解起来比较困难:

 

Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim nd As WinForm.TreeNode
For Each dr As DataRow In DataTables("单位树").DataRows
    dr("标题id") = dr("标题id").Trim()
Next
tr.Nodes.Clear
Dim drs As List(of DataRow)
drs = DataTables("单位树").Select("", "标题ID")
For i As Integer = 0 To drs.Count -1
    If  drs(i)("标题id").Length = 2 Then
        nd = tr.nodes.Add(drs(i)("标题id"), drs(i)("标题id"))
    Elseif drs(i)("标题id").StartsWith(drs(i-1)("标题id")) Then
        nd = nd.nodes.Add(drs(i)("标题id"), drs(i)("标题id"))
    Else
        Do While True
            nd = nd.ParentNode
            If drs(i)("标题id").StartsWith(nd.Name)
                nd = nd.nodes.Add(drs(i)("标题id"), drs(i)("标题id"))
                Exit Do
            End If
        Loop
    End If
Next

 

 

 


 回到顶部