以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  按列中内容排序是否能实现?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=103068)

--  作者:zsslly
--  发布时间:2017/6/30 0:43:00
--  按列中内容排序是否能实现?
学习帮助,有这样一条代码:Tables("订单").Sort = "客户,日期 DESC"
我的表中有“状态”列,列内的内容有“第一”,“第二”,“第三”,“第四”,“第五”,“第六”等,我想在窗口表中能够实现“第一”,“第二”,“第三”按顺序排在表的上面,其它不变,如表的列中没有这三个内容的时候则不排序,能否实现,求大侠指点?

--  作者:zsslly
--  发布时间:2017/6/30 9:23:00
--  
我的这个列子中的“第一”,“第二”,“第三”,“第四”,“第五”,“第六”等只是我随意示意的,实际不是这样,按正常排序是乱的。早我在想,还有一种方法,设代码为:Tables("订单").Sort = "状态 DESC"
然后蒋“第一”,“第二”,“第三”的三个内容前加上字母如“A第一”,“B第二”,“C第三”,但更专业的用代码来排序应该怎么写呢?求指点?

--  作者:有点甜
--  发布时间:2017/6/30 9:52:00
--  

方法一: 必须添加辅助列,才能排序。根据你的规则,给那一列赋值。

 

方法二: 编写代码修改_Sortkey列的值,比如把第一赋值为 0、第二赋值为1,其余的,把其_Sortkey值+3


--  作者:zsslly
--  发布时间:2017/6/30 10:03:00
--  
谢老师指点!
我添加一个“辅助排序”,想当我在“状态”列中选则内容为“第一”时则“辅助排序”中的内容自动出现“1”,当我在“状态”列中选则内容为“第二”时则“辅助排序”中的内容自动出现“2”,当我在“状态”列中选则内容为“第三”时则“辅助排序”中的内容自动出现“3”,当我在“状态”列中选则内容为“第四”时则“辅助排序”中的内容自动出现“4”,当我在“状态”列中选则其他内容时则“辅助排序”中的内容自动出现“5”,有没有知识点,或指点下代码,跪谢!

--  作者:有点甜
--  发布时间:2017/6/30 10:14:00
--  

 这些都是最基础的代码啊

 

If e.DataCol.Name = "第一列" Then
    Dim ary() As String = {"第一", "第二", "第三"}
    If e.NewValue = Nothing Then
        e.DataRow("第二列") = 999
    Else
        Dim i = array.indexof(ary, e.NewValue)
        If i >= 0 Then
            e.DataRow("第二列") = i
        Else
            e.DataRow("第二列") = 999
        End If
    End If
End If


--  作者:zsslly
--  发布时间:2017/6/30 10:25:00
--  
不好意思老师,我的基本功不扎实,我会加油的!给您添麻烦了!