以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  目录树的排序问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=22609)

--  作者:zpx_2012
--  发布时间:2012/8/18 17:40:00
--  目录树的排序问题

请教各位大师,遍历项目中的所有表及列生成目录树要怎样实现按汉语拼音自上到下排序?

 

For Each dt As DataTable In DataTables

     nd = tr.Nodes.Add(dt.Name)

          For Each dc As DataCol In DataTables(dt.Name).DataCols

               nd.Nodes.Add(dc.Name)

          Next

Next

 

生成的目录树如下:但表名没有按汉语拼音顺序,使用中不易查找。

 


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

--  作者:程兴刚
--  发布时间:2012/8/20 9:09:00
--  

采用集合,对集合内数据进行排序后再生成目录树!


--  作者:zpx_2012
--  发布时间:2012/8/20 12:39:00
--  
谢谢两位的回复,但还是不太明白,能够再详细点吗?谢谢!
--  作者:狐狸爸爸
--  发布时间:2012/8/20 15:12:00
--  

你在命令窗口执行看看:

 

Dim nms As New List(of String)
For Each dt As DataTable  In DataTables
    nms.add(dt.name)
Next
nms.sort()
For Each nm As String In nms
   output.show(nm)
Next


--  作者:zpx_2012
--  发布时间:2012/8/20 16:10:00
--  

谢谢狐爸,这样一举例我看一下就明白了,程老师也是这个意思但我不知道怎么做出来。谢谢大家,

将完整的代码跟大伙分享一下,但愿不要有错。主要是根据角色来授权,我觉得这个思路很不错,但还没完全做完,到时再跟大家分享完整版。

Dim tr1 As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim tr2 As WinForm.TreeView = e.Form.Controls("TreeView2")
Dim tr3 As WinForm.TreeView = e.Form.Controls("TreeView3")
Dim nd As WinForm.TreeNode

tr1.BuildTree("授权表","部门|角色")

\'选取需要授权的表进行排序
Dim nms As New List(of String)
For Each dt As DataTable In DataTables
    Select Case dt.name
        Case "导航","消息","用户","授权表","项目分类"

        Case Else
            nms.add(dt.name)
    End Select
Next
nms.sort()
\'将需要授权的表生成目录树
For Each nm As String In nms 
    nd = tr2.Nodes.Add(nm)
    For Each dc As DataCol In DataTables(nm).DataCols
        nd.Nodes.Add(dc.Name)
    Next
    nd = tr3.Nodes.Add(nm)
    For Each dc As DataCol In DataTables(nm).DataCols
        nd.Nodes.Add(dc.Name)
    Next
Next