以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 怎样让combolist由多到少排列? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=38974) |
||||
-- 作者:jacksn -- 发布时间:2013/8/12 15:34:00 -- 怎样让combolist由多到少排列? form1有一个COMOBOX,我想让它的COMbolist选项来自列A的内容,但是出现次数多的排在前,少的在后,应该怎样编?求思路,谢谢! 请看例子:
我希望窗口打开时那个checkcombobox能按列A的统计自动排列,拖拉机(4个)第一,飞机(3个)第二,坦克第(2个)三,小汽车(1个)最后。
[此贴子已经被作者于2013-8-12 16:38:07编辑过]
|
||||
-- 作者:Bin -- 发布时间:2013/8/12 15:39:00 -- 是可以设置排序的 http://www.foxtable.com/help/topics/1435.htm |
||||
-- 作者:jacksn -- 发布时间:2013/8/12 16:11:00 -- 但是我要的是排序是根据列A本身内容出现次数的多少,例如“小汽车”这个内容出现了100次是最多,就排在第一位,“拖拉机”出现1次最少就排最后。如果sort列A的话,应该是按列A的名称(例如字母顺序)排列吧? |
||||
-- 作者:Bin -- 发布时间:2013/8/12 16:13:00 -- 这样的话那你就要用代码统计了,你上个例子吧. |
||||
-- 作者:shenyl0211 -- 发布时间:2013/8/12 21:19:00 -- 我在表中是先对列A进行排序,再执行其它代码。不知道是否适合form |
||||
-- 作者:有点甜 -- 发布时间:2013/8/12 23:05:00 -- 代码 Dim cb1 As WinForm.ComboBox = e.Form.Controls("ComboBox1") Dim dics As new SortedDictionary(Of Integer, String) For Each data As String In DataTables("表A").GetUniqueValues("", "第一列") Dim count As Integer = DataTables("表A").Compute("count(_Identify)", "第一列 = \'" & data & "\'") dics.Add(count, data) Next Dim x As Integer = 0 For Each i As Integer In dics.keys cb1.Items.Insert(0, dics(i)) x += 1 Next |
||||
-- 作者:jacksn -- 发布时间:2013/8/13 21:14:00 -- 非常感谢有点甜,成功了! 可是这个SortedDictionary是什么呢?帮助也没有啊?看来FT很多技术还没有写到帮助里面去啊! 另外,如果有项目的数量是相同的又会怎样呢?——会产生“已经具有相同键的数目”的错误。
[此贴子已经被作者于2013-8-13 21:54:12编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2013/8/13 21:32:00 -- SortedDictionary 会把加入的key从小到大排序。这样就少了自己排序的麻烦。 |