以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  排序问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=7890)

--  作者:实话实说
--  发布时间:2010/8/16 20:19:00
--  排序问题
我想[产品]表的"规格"列的下拉列表按数字大小排序,如何简单做到?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table


--  作者:czy
--  发布时间:2010/8/16 21:16:00
--  
将规格列改成数值型,然后在GetComboListString中指定Sort参数.
--  作者:czy
--  发布时间:2010/8/18 13:42:00
--  

现学现卖一个。

 

If e.Col.Name = "型号" Then
    e.Col.Combolist = DataTables("产品").GetComboListString("型号")
End If
If e.Col.Name = "规格" Then
    Dim List As String = DataTables("产品").GetComboListString("规格","[规格] Is Not Null And [型号] = \'" & e.Row("型号") & "\'")
    Dim s1() As String = List.Split("|")
    Dim s2(s1.Length - 1) As Single
    For i As Integer = 0 To  s1.Length  - 1
        s2(i) =s1(i)
    Next
    Array.Sort(s2)
    Dim Val As String
    For i As Integer = 0 To s2.Length  - 1
        Val = Val & s2(i) & "|"
    Next
    e.Col.Combolist = Val
End If

[此贴子已经被作者于2010-8-18 13:49:06编辑过]

--  作者:实话实说
--  发布时间:2010/8/19 6:58:00
--  
以下是引用czy在2010-8-18 13:42:00的发言:

现学现卖一个。

 

If e.Col.Name = "型号" Then
    e.Col.Combolist = DataTables("产品").GetComboListString("型号")
End If
If e.Col.Name = "规格" Then
    Dim List As String = DataTables("产品").GetComboListString("规格","[规格] Is Not Null And [型号] = \'" & e.Row("型号") & "\'")
    Dim s1() As String = List.Split("|")
    Dim s2(s1.Length - 1) As Single
    For i As Integer = 0 To  s1.Length  - 1
        s2(i) =s1(i)
    Next
    Array.Sort(s2)
    Dim Val As String
    For i As Integer = 0 To s2.Length  - 1
        Val = Val & s2(i) & "|"
    Next
    e.Col.Combolist = Val
End If

[此贴子已经被作者于2010-8-18 13:49:06编辑过]

用了一下,与1楼相比,1、“型号”列不能录入新的型号;2、“规格”列新录入的规格不能加入下拉列表。

字符型的数字排序经常会遇到,希望加入到狐表系统中默认使用


--  作者:mr725
--  发布时间:2010/8/19 9:52:00
--  
以下是引用实话实说在2010-8-19 6:58:00的发言:

用了一下,与1楼相比,1、“型号”列不能录入新的型号;2、“规格”列新录入的规格不能加入下拉列表。

字符型的数字排序经常会遇到,希望加入到狐表系统中默认使用

这个应该很好解决吧, Datacolchanged 事件中判断一下 Val 中是否包含新录入的数字, 否则重新执行一下C版的代码就可以了.


--  作者:czy
--  发布时间:2010/8/19 13:15:00
--  
以下是引用实话实说在2010-8-19 6:58:00的发言:

用了一下,与1楼相比,1、“型号”列不能录入新的型号;2、“规格”列新录入的规格不能加入下拉列表。

字符型的数字排序经常会遇到,希望加入到狐表系统中默认使用

 

如果你知道问题出在哪里,修正代码应该很简单了。

 

If e.Col.Name = "型号" Then
    e.Col.Combolist = DataTables("产品").GetComboListString("型号")
End If
If e.Col.Name = "规格" Then
    Dim List As String = DataTables("产品").GetComboListString("规格","[型号] = \'" & e.Row("型号") & "\'")
    List = List.Trim("|")
    If List.Length > 0 Then
        Dim s1() As String = List.Split("|")
        Dim s2(s1.Length - 1) As Single
        For i As Integer = 0 To  s1.Length  - 1
            s2(i) =s1(i)
        Next
        Array.Sort(s2)
        Dim Val As String
        For i As Integer = 0 To s2.Length  - 1
            Val = Val & s2(i) & "|"
        Next
        e.Col.Combolist = Val
    Else
        e.Col.Combolist = ""
    End If
End If


--  作者:实话实说
--  发布时间:2010/8/19 20:13:00
--  
谢谢