以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  会计科目新增排序问题(已解决)  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=40566)

--  作者:jiterp
--  发布时间:2013/9/23 16:05:00
--  会计科目新增排序问题(已解决)

在CaseStudy目录下的文件:会计科目.Table的示例中,假如我要增加一个会计科目:"101200,新增科目",展示结果如下:

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

 

我想实现新增科目自动按编码顺序进行排序列印,应放到第一位,即101201前面,而不是每次增加都放在在末位,需要改哪里?

[此贴子已经被作者于2013-9-23 18:06:13编辑过]

--  作者:Bin
--  发布时间:2013/9/23 16:11:00
--  
1.手动移动到指定位置再生成
2.把根据Datatable生成改为根据Table生成 这样你先排序 再生成就可以了.

--  作者:jiterp
--  发布时间:2013/9/23 16:21:00
--  

Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim nd As WinForm.TreeNode
Dim dt As DataTable = DataTables("会计科目")
tr.StopRedraw()
tr.Nodes.Clear
tr.Nodes.Add("全部")
For Each dr As DataRow In dt.datarows
    If dr.IsNull("科目代码") = False AndAlso dr("科目代码").Length = 4 Then
        nd = tr.Nodes.Add(dr("科目代码"),dr("科目代码") & " " & dr("科目名称"))
        Functions.Execute("AddChildren",nd,dt)
    End If
Next
tr.ResumeRedraw()

 

就这一段码,没有Tables控件.


--  作者:Bin
--  发布时间:2013/9/23 16:27:00
--  
请认真看我2楼的回复,和Table控件无关.
--  作者:jiterp
--  发布时间:2013/9/23 16:37:00
--  

我是新学的,没能看明白.

 


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

这个是使用了内部函数,不是用树型产生的.


--  作者:Bin
--  发布时间:2013/9/23 16:42:00
--  
Dim dt As DataTable = DataTables("会计科目")
tr.StopRedraw()
tr.Nodes.Clear
tr.Nodes.Add("全部")
For Each dr As DataRow In dt.datarows
    If dr.IsNull("科目代码") = False AndAlso dr("科目代码").Length = 4 Then
        nd = tr.Nodes.Add(dr("科目代码"),dr("科目代码") & " " & dr("科目名称"))
        Functions.Execute("AddChildren",nd,dt)
    End If
Next

看到些了吗? 包括内部函数内的, 改为 table  和 rows  row

然后你把table 排序一下,就可以按照你想要的顺序生成了.

新手建议还是先慢慢看帮助吧.

--  作者:狐狸爸爸
--  发布时间:2013/9/23 17:08:00
--  

不用排序也行,我给你完整的答案,AddChidren这个函数的代码改为:

 

Dim nd As WinForm.TreeNode = args(0)
Dim dt As DataTable = args(1)
For Each dr As DataRow In dt.Select("","科目代码")
    Dim km As String = dr("科目代码")
    If km.StartsWith(nd.name) AndAlso km.Length = nd.Name.Length + 2 Then
         Dim cd As Winform.TreeNode = nd.Nodes.Add(km,km & " " & dr("科目名称"))
        Functions.Execute("AddChildren",cd,dt)
    End If
Next

 

 

窗口1的AfterLoad事件代码改为:

 

Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim nd As WinForm.TreeNode
Dim dt As DataTable = DataTables("会计科目")
tr.StopRedraw()
tr.Nodes.Clear
tr.Nodes.Add("全部")
For Each dr As DataRow In dt.Select("","科目代码")
    If dr.IsNull("科目代码") = False AndAlso dr("科目代码").Length = 4 Then
        nd = tr.Nodes.Add(dr("科目代码"),dr("科目代码") & " " & dr("科目名称"))
        Functions.Execute("AddChildren",nd,dt)
    End If
Next
tr.ResumeRedraw()

[此贴子已经被作者于2013-9-23 17:08:22编辑过]

--  作者:狐狸爸爸
--  发布时间:2013/9/23 17:13:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目50.table


--  作者:jiterp
--  发布时间:2013/9/23 18:05:00
--  
受教了,说句心里话,我很喜欢这个论坛.因为我这个新手的学习过程,是先看了几遍,但就是没有理解,然后就尝试着做项目,项目中要用到的功能,我就在这个论坛里找答案,然后,确实没找到,再上例子问老师.这样一个过程,我发现我喜欢上了狐表,有很多新的东西让我在这个论坛中找到了方法.

当然,象BIN老师所说的一样,新手是要看帮助,一个个地理会,但对于没有学过任何编程语言的人来讲,看帮助有时候真的就是理解不了.狐表有一点就是好,就是说你要实现什么样的功能,直接把代码复制过来应用就可以,说句心里话,我自己把有我需要用到的代码都整理在一边,要用这个功能的时候,就粘过去,至于这代码的逻辑意思,确实有些可以看懂,有些还是似懂非懂.

但是有一点,我在这里找到了我的乐趣,看到了我学习的兴趣.谢谢两位老师了!