单击ListView 列表头实现排序
ListView 控件有排序的功能!是一段代码实现排序的功能。并在列表头加上了排序的符号
代码如下:
Dim Li_i As Integer
Dim Li_Count As Integer
Dim li_len As Integer
Dim ls_num As String '总数量
Dim ls_amount As String '总金额
Dim ls_return As String '毛利
If lstmx.ListItems.Count = 0 Then Exit Sub ‘没有数据退出
'将合计列中的数据取出来
ls_num = lstmx.ListItems.Item(lstmx.ListItems.Count).SubItems(8)
ls_amount = lstmx.ListItems.Item(lstmx.ListItems.Count).SubItems(10)
ls_return = lstmx.ListItems.Item(lstmx.ListItems.Count).SubItems(11)
lstmx.ListItems.Remove lstmx.ListItems.Count '移出合计列。使合计列不参加排序
lstmx.Sorted = gs_bl_True'排序设为真
Li_Count = lstmx.ColumnHeaders.Count
For Li_i = 1 To Li_Count
li_len = InStr(Trim(lstmx.ColumnHeaders.Item(Li_i).Text), "△")
If li_len > 0 Then _
lstmx.ColumnHeaders.Item(Li_i).Text = _
Left(lstmx.ColumnHeaders.Item(Li_i).Text, li_len - 1)
li_len = InStr(Trim(lstmx.ColumnHeaders.Item(Li_i).Text), "▽")
If li_len > 0 Then _
lstmx.ColumnHeaders.Item(Li_i).Text = _
Left(lstmx.ColumnHeaders.Item(Li_i).Text, li_len - 1)
li_len = 0
Next
lstmx.SortKey = ColumnHeader.Index - 1
lstmx.SortOrder = Abs(Not lstmx.SortOrder = 1)
If lstmx.SortOrder = 0 Then '升序设为假
ColumnHeader.Text = ColumnHeader.Text & "△"
Else '降序
ColumnHeader.Text = ColumnHeader.Text & "▽"
End If
lstmx.Sorted = gs_bl_False '排序为假
Li_Count = lstmx.ListItems.Count
lstmx.ListItems.Add , , "合计:" '添加合计列
lstmx.ListItems.Item(Li_Count + 1).Bold = gs_bl_True
lstmx.ListItems.Item(Li_Count + 1).ForeColor = vbRed
lstmx.ListItems.Item(Li_Count + 1).SubItems(8) = ls_num
lstmx.ListItems.Item(Li_Count + 1).SubItems(10) = ls_amount
lstmx.ListItems.Item(Li_Count + 1).SubItems(11) = ls_return