Private Sub ListView1_ColumnClick(ByVal ColumnHeader As ColumnHeader)
Dim i As Integer
' If (ListView1.SortKey = ColumnHeader.Index - 1) Then
ColumnHeader.Tag = Not Val(ColumnHeader.Tag)
End If
ListView1.SortOrder = Abs(Val(ColumnHeader.Tag))
ListView1.SortKey = ColumnHeader.Index - 1
ListView1.Sorted = True
End Sub几百条数据 这样的排序数值自段出这种结果 降序类似
升序
1000
1001
2000
100
102
103
如何正确排序呢?错在哪里呢?
Dim i As Integer
' If (ListView1.SortKey = ColumnHeader.Index - 1) Then
ColumnHeader.Tag = Not Val(ColumnHeader.Tag)
End If
ListView1.SortOrder = Abs(Val(ColumnHeader.Tag))
ListView1.SortKey = ColumnHeader.Index - 1
ListView1.Sorted = True
End Sub几百条数据 这样的排序数值自段出这种结果 降序类似
升序
1000
1001
2000
100
102
103
如何正确排序呢?错在哪里呢?
1000
1001
2000
100
102
103
要变成
1000
1001
2000
0100
0102
0103
再排就自然OK了。
'排序带数字的列
If ColumnHeader.TEXT = "岗次" Then
For lngIndex = 1 To lvwEmployee.ListItems.Count
lvwEmployee.ListItems(lngIndex).SubItems(ColumnHeader.Index - 1) = Format(lvwEmployee.ListItems(lngIndex).SubItems(ColumnHeader.Index - 1), "000000000000")
Next
End If
With lvwEmployee
If (ColumnHeader.Index - 1) = .SortKey Then
.SortOrder = (.SortOrder + 1) Mod 2
Else
.Sorted = False
.SortOrder = 0
.SortKey = ColumnHeader.Index - 1
.Sorted = True
End If
End With
If ColumnHeader.TEXT = "岗次" Then
For lngIndex = 1 To lvwEmployee.ListItems.Count
If lvwEmployee.ListItems(lngIndex).SubItems(ColumnHeader.Index - 1) = "000000000000" Then
lvwEmployee.ListItems(lngIndex).SubItems(ColumnHeader.Index - 1) = "0"
Else
lvwEmployee.ListItems(lngIndex).SubItems(ColumnHeader.Index - 1) = Format(lvwEmployee.ListItems(lngIndex).SubItems(ColumnHeader.Index - 1), "###")
End If
Next
End If偶以前的程序 参考下
得格式化数据才能重排序
原来是这样谢谢楼上
可是数值原来是数值型的 , 不能让用户看到 变成 010 012吧
看windows 的排序就正常.
如果不希望 在listview里看到000123这样得形式怎么办?
可以在Listview中增加一个宽度为0的列,所存储的值同上面的方法
1000
1001
2000
100
102
103
要变成
1000
1001
2000
0100
0102
0103再按新增的列排序试试......
没上机调试,楼主可以试一下