Compartilhar via


Coluna Classificar Modes in the Windows Forms DataGridView controle

DataGridView as colunas têm três modos de classificar. O modo de classificar para cada coluna é especificado por meio de SortMode propriedade da coluna, que pode ser conjunto a uma das seguintes DataGridViewColumnSortMode valores de enumeração.

DataGridViewColumnSortMode valor

Descrição

Automatic

Padrão para colunas de caixa de texto.A menos que cabeçalhos de coluna sejam usados para a seleção, clicando no cabeçalho da coluna automaticamente classifica o DataGridView por esta coluna e exibe um glifo indicando a ordem de classificar.

NotSortable

O padrão para non–Texto caixa colunas.Você pode classificar essa coluna programaticamente; no entanto, ele não se destina classificação, para que nenhum espaço é reservado para o glifo de classificação.

Programmatic

Você pode classificar essa coluna programaticamente e espaço é reservado para o glifo de classificação.

Convém alterar o modo de classificar para uma coluna padrões para NotSortable Se ele contiver valores que podem ser solicitados de forma significativa. Por exemplo, se você tiver uma coluna de banco de dados que contêm números que representam sistema autônomo estados de item, você pode exibir esses números sistema autônomo ícones correspondentes pela vinculação de uma coluna de imagem a coluna do banco de dados.É possível alterar os valores das células numéricos em valores de exibição de imagem em um manipulador para o DataGridView.CellFormatting evento. Nesse caso, configuração o SortMode propriedade para Automatic permitirá que os seus usuários classificar a coluna. A classificação automático irá permitir que os usuários agrupar itens que tenham o mesmo estado, mesmo se os estados correspondente os números ainda não tiver uma sequência natural.Caixa de seleção colunas é outro exemplo em que a classificação automático é útil para agrupar itens no mesmo estado.

Você pode classificar um DataGridView por meio de programação pelos valores em qualquer coluna ou em várias colunas, independentemente da SortMode configurações. Através de programação a classificação é útil quando quiser fornecer sua própria interface de usuário (UI) para classificar ou quando você deseja implementar a classificação personalizada.Fornecer suas próprias interfaces do usuário classificação é útil, por exemplo, quando você conjunto o DataGridView modo de seleção para ativar a seleção de cabeçalho de coluna. Nesse caso, embora os cabeçalhos de coluna não podem ser usados para classificação, você ainda deseja os cabeçalhos para exibir o glifo apropriado de classificação, de modo que faria conjunto o SortMode propriedade para Programmatic.

Colunas definida para o modo de classificar através de programação não exibem automaticamente um glifo de classificar.Para essas colunas, você deve exibir o glifo por conta própria pelo configuração o DataGridViewColumnHeaderCell.SortGlyphDirection propriedade. Isso é necessário se você quiser flexibilidade na classificação personalizada.Por exemplo, se você classificar o DataGridView por várias colunas, convém exibir vários glifos de classificação ou nenhum glifo de classificação.

Embora programaticamente você pode classificar um DataGridView por qualquer coluna, algumas colunas, sistema autônomo colunas de botão, podem não conter valores que podem ser solicitados de forma significativa. Para essas colunas, um SortMode configuração da propriedade NotSortable indica que ele nunca será usado para classificação, portanto, é necessário reservar espaço no cabeçalho para o glifo a classificação.

Quando um DataGridView está classificada, você pode determinar a coluna de classificar e a ordem de classificar, verificando os valores da SortedColumn e SortOrder Propriedades. Esses valores não são significativos após uma operação de classificação personalizada.Para obter mais informações sobre a classificação personalizada, consulte a seção de classificação personalizadas neste tópico.

Quando um DataGridView controle contendo colunas acopladas e desacopladas está classificada, os valores nas colunas não acopladas não não possível manter automaticamente. Para manter esses valores, você deve implementar o modo virtual, definindo o VirtualMode propriedade para true e lidar com o CellValueNeeded e CellValuePushed eventos. Para obter mais informações, consulte Como: Implementar o modo virtual no Windows Forms DataGridView controle.Não há suporte para a classificação por colunas não acopladas no modo limite.

Classificar por programação

Você pode classificar um DataGridView programaticamente, chamando seu Sort método.

The Sort(DataGridViewColumn,ListSortDirection) sobrecarga da Sort método leva uma DataGridViewColumn e um ListSortDirection valor de enumeração sistema autônomo parâmetros. Essa sobrecarga é útil quando a classificação por colunas com valores que podem ser solicitados forma significativa, mas que você deseja configurar para a classificação automático.Quando você chamar essa sobrecarga e passar de uma coluna com um SortMode valor da propriedade de DataGridViewColumnSortMode.Automatic, o SortedColumn e SortOrder as propriedades são conjunto automaticamente e o glifo apropriado de classificação é exibido no cabeçalho da coluna.

Observação:

Quando o DataGridView controle está acoplado a um dados externos origem definindo o DataSource propriedade, o Sort(DataGridViewColumn,ListSortDirection) sobrecarga de método não funciona para as colunas não acopladas. Além disso, quando o VirtualMode propriedade é true, você pode telefonar essa sobrecarga apenas para colunas acopladas. Para determinar se uma coluna é limite a dados, verifique o IsDataBound valor da propriedade. Não há suporte para classificar colunas não acopladas no modo limite.

Ordenação personalizada

Você pode personalizar DataGridView usando o Sort(IComparer) sobrecarga da Sort método ou pelo tratamento de SortCompare evento.

The Sort(IComparer) sobrecarga de método tem uma instância de uma classe que implementa o IComparer interface sistema autônomo um parâmetro. Essa sobrecarga é útil quando você deseja fornecer classificar personalizada; por exemplo, quando os valores em uma coluna não são necessário uma ordem de classificar natural ou quando a ordem de classificar natural é inadequada.Nesse caso, você não pode usar a classificação automático, mas você ainda pode desejar que os usuários classificar clicando em cabeçalhos de coluna.Você pode telefonar essa sobrecarga em um manipulador para o ColumnHeaderMouseClick Se você não usar cabeçalhos de coluna para seleção de evento.

Observação:

O Sort(IComparer) sobrecarga de método funciona somente quando o DataGridView controle não está limite a um dados externos origem e o VirtualMode valor da propriedade é false. Para personalizar a classificação de colunas vinculadas a uma fonte de dados externa, você deve usar as operações de classificação fornecidas pela fonte de dados.No modo virtual, você deve fornecer suas próprias operações de classificação das colunas não acopladas.

Para usar o Sort(IComparer) sobrecarga de método, você deve criar sua própria classe que implementa o IComparer interface. Essa interface requer sua classe para implementar o IComparer.Compare método, ao qual o DataGridView passagens DataGridViewRow objetos sistema autônomo entrada quando a Sort(IComparer) sobrecarga de método é chamada. Com isso, você pode calcular a ordenação de linha correto com base nos valores de qualquer coluna.

The Sort(IComparer) sobrecarga de método não define o SortedColumn e SortOrder Propriedades, portanto, você deve sempre conjunto a DataGridViewColumnHeaderCell.SortGlyphDirection propriedade para exibir o glifo de classificação.

sistema autônomo alternativa para o Sort(IComparer) sobrecarga de método, você pode fornecer classificação personalizada, Implementando um manipulador para o SortCompare evento. Esse evento ocorre quando os usuários dos cabeçalhos das colunas configurados para a classificação automático ou quando você chama o Sort(DataGridViewColumn,ListSortDirection) sobrecarga da Sort método. O evento ocorre para cada emparelhar de linhas no controle, permitindo que você calcule sua ordem correta.

Observação:

O SortCompare evento não ocorre quando o DataSource propriedade é definida ou quando o VirtualMode valor da propriedade é true.

Consulte também

Tarefas

Como: conjunto modos de classificar de colunas em Windows Forms DataGridView controle

Conceitos

Como: Personalizar classificação in Windows Forms DataGridView controle

Referência

DataGridView

DataGridView.Sort

DataGridView.SortedColumn

DataGridView.SortOrder

DataGridViewColumn.SortMode

DataGridViewColumnHeaderCell.SortGlyphDirection

Outros recursos

Classificando dados no controle do Windows Forms DataGridView