vb中MSHFlexGrid控件排序

我有一个MSHFlexGrid里面有4列内容。我想进行排序。排序按第一列降序,第二列升序也就是说如果第一列里面有很多一样的情况下就按第二列的值升序。

VB MSHFlexGrid控件:Sort、TextMatrix 属性 (MSHFlexGrid) 示例

下面的示例使用 Sort å’Œ TextMatrix å±žæ€§ã€‚它根据一个 ComboBox æŽ§ä»¶çš„值执行一个 MSHFlexGrid æŽ’序。要使用该示例,在窗体中放置一个 MSHFlexGrid æŽ§ä»¶å’Œä¸€ä¸ª ComboBox æŽ§ä»¶ã€‚把下面的代码粘贴到 Declarations 节,然后按 F5 键。

注意 å¦‚果正在使用 MSFlexGrid,用“MSFlexGrid1”代替“MSHFlexGrid1”。

Private Sub Combo1_Click()
' æ ¹æ®æŽ’序方法选择列。
Select Case Combo1.ListIndex 
Case 0 To 2
MSHFlexGrid1.Col =1
Case 3 To 4
MSHFlexGrid1.Col =2
Case 4 To 8
MSHFlexGrid1.Col =1   
End Select
' æ ¹æ® Combo1.ListIndex æŽ’序。
MSHFlexGrid1.Sort =Combo1.ListIndex 
End Sub
Private Sub Form_Load()
Dim i As Integer
' ç”¨éšæœºæ•°æ®å¡«å…… MSHFlexGrid。
MSHFlexGrid1.Cols =3 ' åˆ›å»ºä¸‰åˆ—。
  
For i =1 To 11 ' æ·»åŠ åé¡¹ã€‚
MSHFlexGrid1.AddItem ""
MSHFlexGrid1.Col =2
MSHFlexGrid1.TextMatrix(i, 1) =SomeName(i)
MSHFlexGrid1.TextMatrix(i, 2) =Rnd()
Next i
' ç”¨æŽ’序选择填充 combo æ¡†ã€‚
With Combo1
.AddItem "flexSortNone" ' 0
.AddItem "flexSortGenericAscending" '1
.AddItem "flexSortGenericDescending" '2
.AddItem "flexSortNumericAscending" '3
.AddItem "flexSortNumericDescending" '4
.AddItem "flexSortStringNoCaseAsending" '5
.AddItem "flexSortNoCaseDescending" '6
.AddItem "flexSortStringAscending" '7
.AddItem "flexSortStringDescending" '8
.ListIndex =0
End With
End Sub
Private Function SomeName(i As Integer) As String
Select Case i
Case 1
SomeName ="Ann"
Case 2
SomeName ="Glenn"
Case 3
SomeName ="Sid"
Case 4
SomeName ="Anton"
Case 5
SomeName ="Hoagie"
Case 6
SomeName ="Traut 'Trane"
Case 7
SomeName ="MereD Wah"
Case 8
SomeName ="Kemp"
Case 9
SomeName ="Sandy"
Case 10
SomeName ="Lien"
Case 11
SomeName ="Randy"
End Select
End Function追问

麻烦这个只能实现一列排序。我要的是第一列排序。然后第一列有相同的就按第二列排序。后面那个功能才重要。

追答

自己要学会扩展,这个只是一个例子。

追问

麻烦我要会扩展就不用问了呀!一列的排序代码很简单。不需要你的这么麻烦。关键是后面的第二个功能麻烦。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-05-08
如果前台没有操作要求你可以直接在数据库查询语句进行过滤,程序中的table.sort 属性中应该也可以用order by 不过我没有试过你可以试验一下!
sql 语句 demo:select id,col1,col2 from table order by id asc ,col1 desc本回答被提问者采纳
相似回答