COMO ORDENAR un LISTVIEW al pinchar su ENCABEZADO?
Lo puedes hacer de la siguiente manera.
En el evento ColumnClick de tu listview, este es mi ejemplo
Ordenar por Número
Private Sub lstNomina_ColumnClick(sender As Object, e As ColumnClickEventArgs) Handles lstNomina.ColumnClick
Select Case e.Column
Case 1
Call OrderByNumero()
Case 2
Call OrderByNombre()
End Select
End Sub
Private Sub OrderByNumero()
lstNomina.Items.Clear()
lstNomina.Sorting = False
Try
Using cnx As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & dSn)
cnx.Open()
sSql = "SELECT * FROM NOMINA ORDER BY NUMEMP"
Dim cmd As New OleDbCommand(sSql, cnx)
cmd.CommandType = CommandType.Text
Dim rstNomina As OleDbDataReader = cmd.ExecuteReader()
While rstNomina.Read
Dim itemlist As New ListViewItem '(Convert.ToString(row.Item("NUMEMP")))
itemlist.SubItems.Add(rstNomina(0)) 'NUMEMP
itemlist.SubItems.Add(rstNomina(1)) 'NOMEMP
itemlist.SubItems.Add(rstNomina(2)) 'FECHA
itemlist.SubItems.Add(Format(rstNomina(3), "##")) 'DIAS
itemlist.SubItems.Add(Format(rstNomina(4), "##,###.##")) 'SUELDO
itemlist.SubItems.Add(Format(rstNomina(5), "#.#")) 'HORAS EXTRAS
itemlist.SubItems.Add(Format(rstNomina(6), "##,###.##")) 'IMPORTE
itemlist.SubItems.Add(Format(rstNomina(7), "##")) 'DIAS DE VACACIONES
itemlist.SubItems.Add(Format(rstNomina(8), "##,###.##")) 'IMPORTE DE VACACIONES
itemlist.SubItems.Add(Format(rstNomina(9), "##,###.##")) 'PRIMA VACACIONAL
itemlist.SubItems.Add(Format(rstNomina(10), "##,###.##")) 'INCENTIVO
itemlist.SubItems.Add(Format(rstNomina(11), "##,###.##")) 'PERCEPCIONES
itemlist.SubItems.Add(Format(rstNomina(12), "##,###.##")) 'AHORRO
itemlist.SubItems.Add(Format(rstNomina(13), "##,###.##")) 'PAGO
itemlist.SubItems.Add(Format(rstNomina(14), "##,###.##")) 'INTERES
itemlist.SubItems.Add(Format(rstNomina(15), "##,###.##")) 'INFONAVIT
itemlist.SubItems.Add(Format(rstNomina(16), "##,###.##")) 'FONACOT
itemlist.SubItems.Add(Format(rstNomina(17), "##,###.##")) 'OTROS
itemlist.SubItems.Add(Format(rstNomina(18), "##,###.##")) 'COMEDOR
itemlist.SubItems.Add(Format(rstNomina(19), "##,###.##")) 'VALES
itemlist.SubItems.Add(Format(rstNomina(20), "##,###.##")) 'PENSION
itemlist.SubItems.Add(Format(rstNomina(21), "##,###.##")) 'DEDUCCIONES
itemlist.SubItems.Add(Format(rstNomina(22), "##,###.##")) 'TOTAL
itemlist.SubItems.Add(Format(rstNomina(23), "##,###.##")) 'TRANSFERENCIA
itemlist.SubItems.Add(Format(rstNomina(24), "##,###.##")) 'DEPOSITO
itemlist.SubItems.Add(Format(rstNomina(25), "##,###.##")) 'SOBRE
itemlist.SubItems.Add(rstNomina(26)) 'SEMANA
itemlist.SubItems.Add(rstNomina(27)) 'STATUS
lstNomina.Items.Add(itemlist)
End While
rstNomina.Close()
End Using
Catch ex As Exception
MessageBox.Show("Error : " + ex.Message + "", "¡Ocurrio el siguiente Error!", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
Ordenar por nombre
Private Sub OrderByNombre()
lstNomina.Items.Clear()
lstNomina.Sorting = False
Try
Using cnx As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & dSn)
cnx.Open()
sSql = "SELECT * FROM NOMINA ORDER BY NOMEMP"
Dim cmd As New OleDbCommand(sSql, cnx)
cmd.CommandType = CommandType.Text
Dim rstNomina As OleDbDataReader = cmd.ExecuteReader()
While rstNomina.Read
Dim itemlist As New ListViewItem '(Convert.ToString(row.Item("NUMEMP")))
itemlist.SubItems.Add(rstNomina(0)) 'NUMEMP
itemlist.SubItems.Add(rstNomina(1)) 'NOMEMP
itemlist.SubItems.Add(rstNomina(2)) 'FECHA
itemlist.SubItems.Add(Format(rstNomina(3), "##")) 'DIAS
itemlist.SubItems.Add(Format(rstNomina(4), "##,###.##")) 'SUELDO
itemlist.SubItems.Add(Format(rstNomina(5), "#.#")) 'HORAS EXTRAS
itemlist.SubItems.Add(Format(rstNomina(6), "##,###.##")) 'IMPORTE
itemlist.SubItems.Add(Format(rstNomina(7), "##")) 'DIAS DE VACACIONES
itemlist.SubItems.Add(Format(rstNomina(8), "##,###.##")) 'IMPORTE DE VACACIONES
itemlist.SubItems.Add(Format(rstNomina(9), "##,###.##")) 'PRIMA VACACIONAL
itemlist.SubItems.Add(Format(rstNomina(10), "##,###.##")) 'INCENTIVO
itemlist.SubItems.Add(Format(rstNomina(11), "##,###.##")) 'PERCEPCIONES
itemlist.SubItems.Add(Format(rstNomina(12), "##,###.##")) 'AHORRO
itemlist.SubItems.Add(Format(rstNomina(13), "##,###.##")) 'PAGO
itemlist.SubItems.Add(Format(rstNomina(14), "##,###.##")) 'INTERES
itemlist.SubItems.Add(Format(rstNomina(15), "##,###.##")) 'INFONAVIT
itemlist.SubItems.Add(Format(rstNomina(16), "##,###.##")) 'FONACOT
itemlist.SubItems.Add(Format(rstNomina(17), "##,###.##")) 'OTROS
itemlist.SubItems.Add(Format(rstNomina(18), "##,###.##")) 'COMEDOR
itemlist.SubItems.Add(Format(rstNomina(19), "##,###.##")) 'VALES
itemlist.SubItems.Add(Format(rstNomina(20), "##,###.##")) 'PENSION
itemlist.SubItems.Add(Format(rstNomina(21), "##,###.##")) 'DEDUCCIONES
itemlist.SubItems.Add(Format(rstNomina(22), "##,###.##")) 'TOTAL
itemlist.SubItems.Add(Format(rstNomina(23), "##,###.##")) 'TRANSFERENCIA
itemlist.SubItems.Add(Format(rstNomina(24), "##,###.##")) 'DEPOSITO
itemlist.SubItems.Add(Format(rstNomina(25), "##,###.##")) 'SOBRE
itemlist.SubItems.Add(rstNomina(26)) 'SEMANA
itemlist.SubItems.Add(rstNomina(27)) 'STATUS
lstNomina.Items.Add(itemlist)
End While
rstNomina.Close()
End Using
Catch ex As Exception
MessageBox.Show("Error : " + ex.Message + "", "¡Ocurrio el siguiente Error!", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
Espero haber enviado a tiempo la respuesta ya que hasta el día de hoy entre al foro.
Saludos desde México.