DataGridView colunas são, por padrão, a funcionalidade espécie registra automaticamente, basta clicar sobre o cabeçalho da coluna que contém os dados para o qual você deseja classificar os dados.
Cada coluna tem um SortMode datagridview propriedade que podemos definir em NoSortable, Automatic e programática. Se nunca alterar esta propriedade, estará em Automático.
A ordem funciona muito bem, a menos que você quiser classificar por uma coluna numérica. Os dados numéricos é classificado como texto para que a ordem não será correta. Em seguida, mostrar um exemplo para que você possa entender melhor.
Por exemplo, precisamos de uma forma e controle datagridview. Adicione três colunas nomeadas Nome, Grupo e Pontuação. Você deve ver algo parecido com a seguinte imagem:
Em seguida, adicione este código no Load do formulário para adicionar alguns registros:
Private Sub Form1_Load (sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load DataGridView1.Rows.Add (New String () {"Eliseu", "usuário", 24321}) DataGridView1.Rows.Add ( New String () {"Carlos", "suporte", 122}) DataGridView1.Rows.Add (New String () {"Jose", "Usuário", 423}) DataGridView1.Rows.Add (New String () {" Sebastian "," Supervisor ", 1023}) DataGridView1.Rows.Add (New String () {" Javier "," Usuário ", 111}) DataGridView1.Rows.Add (New String () {" Sue "," Usuário " , 1}) DataGridView1.Rows.Add (New String () {"Veronica", "Supervisor", 24}) DataGridView1.Rows.Add (New String () {"Gabriela", "User", 65}) DataGridView1. Rows.Add (New String () {"Agostinho", "Usuário", 719}) DataGridView1.Rows.Add (New String () {"Camila", "Supervisor", 4322}) DataGridView1.Rows.Add (Nova Cadeia () {"Melisa", "Usuário", 654}) DataGridView1.Rows.Add (New String () {"Liliana", "suporte", 22}) End Sub Agora, para entender melhor como eles devem executar o programa e teste ordenado pelas três colunas. Aqui vou mostrar-lhe como quando solicitado pela coluna de pontuação:
Bem, a imagem é muito clara: 1, 1023, 111, 122, 22 ... não é a ordem correta. Para resolver este problema, devemos alterar a ordem da coluna para classificação automática programático.
Bem, este é apenas o primeiro passo agora precisamos adicionar ao nosso formulário de uma nova classe que irá agendar a ordem para colunas numéricas, a classe é a seguinte:
Public Class OrdenarColumnaNumerica Implementa System.Collections.IComparer SortOrderModifier privado As Integer = 1 Col privado As Integer = 0 Public Sub New (ByVal sortOrder Como SortOrder, coluna ByVal As Integer) Col = Coluna Se sortOrder = sortOrder.Descending seguida = -1 sortOrderModifier Então ElseIf sortOrder = sortOrder.Ascending sortOrderModifier = 1 End If End Sub Função Pública Compare (ByVal x As Object, ByVal y As Object) As Integer _ Implementa System.Collections.IComparer.Compare DataGridViewRow1 Dim DataGridViewRow = CType (x, DataGridViewRow) DataGridViewRow2 Dim DataGridViewRow = CType (y, DataGridViewRow) Retorno (Math.Sign (CLng (DataGridViewRow1.Cells (Col) Value) -.. CLng (DataGridViewRow2.Cells (Col) Value))) * sortOrderModifier End Function End Class
Uma vez que temos a nossa classe para lidar com ordem coluna numérica, chamamos isso de caso ColumnHeaderMouseClick datagridview da seguinte forma:
DataGridView1_ColumnHeaderMouseClick Private Sub (sender As Object, ByVal e System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DataGridView1.ColumnHeaderMouseClick Encomende estática As Integer = 1 Se DataGridView1.Rows.Count> 0 Then Se DataGridView1.Columns (e.ColumnIndex). Name = "pontuação" Então Se Order = 1 Then DataGridView1.Sort (Nova OrdenarColumnaNumerica (SortOrder.Ascending, e.ColumnIndex)) Ordem = 0 Outro DataGridView1.Sort (Nova OrdenarColumnaNumerica (SortOrder.Descending, e.ColumnIndex)) Ordem = 1 End If End If End If End Sub
Pronto! Agora você só precisa executar e testar o programa. Agora, o resultado será parecido na próxima imagem corretamente ordenou:
Espero que você possa dar um bom uso a esta técnica.
Informações Bitacoras.com ...
Taxa de Bitacoras.com: DataGridView Colunas são, por padrão, a funcionalidade espécie registra automaticamente, basta clicar sobre o cabeçalho da coluna que contém os dados para o qual você deseja classificar o ......
Olá e feito todo o exercício como este e eu recebo um erro na coluna de pontuação e teve que colocá-lo citações "e também não mandou, por favor, você pode me ajudar ... muchas grasias
Oi, eu encontrei este post muito interessante, eu me pergunto como eles poderiam fazer se a coluna tem datas, o problema é que, ao preencher a grade com uma consulta sql, convertido para varchar para só me mostrar a data, sem o tempo e não encontrar uma maneira de-os através da grade
Eu preciso pedir um datagrid que é carregado com um conjunto de dados de uma consulta sobre uma tabela no SQL. CDO eu clicar no nome da coluna, a ordem.
Muito obrigado, eu era de pouca ajuda. Eu precisava para classificar o controle DataGridView sem que o usuário tinha que clicar e com a sua ajuda eu consegui o que eu queria.
Uma pergunta, como ordenados por data? Obrigado.
bom amigo, me ajudou muito este ...
Olá! Eu tenho uma pergunta semelhante e não consigo resolver. alguém pode me ajudar? se assim que eu enviar para o seu e-mail as perguntas mais detalhadas que podem ajudar. Obrigado. este é o meu mail: nelson_nn_0800@hotmail.com apreciar a me ajudar!
Recebo esta mensagem de erro se DataGridView1.Columns (e.ColumnIndex). Name = "pontuação" Então