ORDENAR COLUNAS LISTVIEW VB.NET
Pessoal, preciso criar um metodo para classificar as colunas do meu listiview, em ordem crescente ou decrescente, sei que é possivel fazer isso no select, porém quero que seja feito ao clicar na coluna do listview. se possivel gostaria que tivesse um modo de fazer a classificação similar ao excel, por exemplo Data Contábil, valor, e numero de NF.
Boa tarde Leonardo,
Crie uma classe em seu código fonte com o nome ListViewItemComparer, e depois adicione o código abaixo nesta classe.
Após ter criado essa classe, você deve colocar este código no evento ColumnClick do ListView.
Obs.: Eu usava muito o ListView quando iniciei com o .NET, depois de longos estudos mudei para DataGridView. RECOMENDO, excelente componente.
Crie uma classe em seu código fonte com o nome ListViewItemComparer, e depois adicione o código abaixo nesta classe.
Class ListViewItemComparer
Implements IComparer
Private Coluna As Integer
Private Ordem As SortOrder
Public Sub New()
Me.Coluna = 0
Me.Ordem = Windows.Forms.SortOrder.Ascending
End Sub
Public Sub New(ByVal pColuna As Integer)
Me.Coluna = pColuna
Me.Ordem = Windows.Forms.SortOrder.Ascending
End Sub
Public Sub New(ByVal column As Integer, ByVal s As SortOrder)
Me.Coluna = column
Me.Ordem = s
End Sub
Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements IComparer.Compare
If Me.Ordem = Windows.Forms.SortOrder.Ascending Then
Return String.Compare(CType(x, ListViewItem).SubItems(Me.Coluna).Text, CType(y, ListViewItem).SubItems(Me.Coluna).Text)
Else
Return String.Compare(CType(y, ListViewItem).SubItems(Me.Coluna).Text, CType(x, ListViewItem).SubItems(Me.Coluna).Text)
End If
End Function
End Class
Após ter criado essa classe, você deve colocar este código no evento ColumnClick do ListView.
Private Sub ListView1_ColumnClick(ByVal sender As Object, ByVal e As System.Windows.Forms.ColumnClickEventArgs) Handles ListView1.ColumnClick
If Me.ListView1.Sorting = SortOrder.Ascending Then
Me.ListView1.Sorting = SortOrder.Descending
Else
Me.ListView1.Sorting = SortOrder.Ascending
End If
Me.ListView1.ListViewItemSorter = New ListViewItemComparer(e.Column, Me.ListView1.Sorting)
End Sub
Obs.: Eu usava muito o ListView quando iniciei com o .NET, depois de longos estudos mudei para DataGridView. RECOMENDO, excelente componente.
Amigo funcionou perfeitamente, utilizo bastante também o datagridview, porém optei neste caso a utilizar o listview por necessidade própria do projeto.
Aproveitando sua ajuda como é feita a formatação de uma coluna como moeda no listview segue abaixo o codigo que utilizo para preenchimento:
Item.SubItems.Add(tabela.Fields([Ô]GROSS_AMT[Ô]).Value.ToString)
Aproveitando sua ajuda como é feita a formatação de uma coluna como moeda no listview segue abaixo o codigo que utilizo para preenchimento:
Item.SubItems.Add(tabela.Fields([Ô]GROSS_AMT[Ô]).Value.ToString)
Tente assim:
Item.SubItems.Add(Format(Convert.ToDouble(tabela.Fields([Ô]GROSS_AMT[Ô]).Value.ToString), [Ô]c[Ô]))
valeu pela ajuda JONATHANSTECKER.
Tópico encerrado , respostas não são mais permitidas