Foxtable(狐表)用户栏目专家坐堂 → 排序问题


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

主题:排序问题

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


加好友 发短信
等级:九尾狐 帖子:2649 积分:19384 威望:0 精华:1 注册:2008/9/12 9:19:00
排序问题  发帖心情 Post By:2010/8/16 20:19:00 [只看该作者]

我想[产品]表的"规格"列的下拉列表按数字大小排序,如何简单做到?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/8/16 21:16:00 [只看该作者]

将规格列改成数值型,然后在GetComboListString中指定Sort参数.

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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By: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编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2649 积分:19384 威望:0 精华:1 注册:2008/9/12 9:19:00
  发帖心情 Post By: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
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2010/8/19 9:52:00 [只看该作者]

以下是引用实话实说在2010-8-19 6:58:00的发言:

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

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

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


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By: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


 回到顶部
帅哥哟,离线,有人找我吗?
实话实说
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2649 积分:19384 威望:0 精华:1 注册:2008/9/12 9:19:00
  发帖心情 Post By:2010/8/19 20:13:00 [只看该作者]

谢谢

 回到顶部