Partilhar via


Ordenando dados em um controle de servidor Web GridView

O controle GridView fornece funcionalidade interna de classificação sem exigir qualquer codificação.Você pode personalizar a funcionalidade de classificação do controle GridView usando valores de propriedade SortExpression personalizadas para colunas além de usar eventos Sorting e Sorted.

Como a ordenação funciona no controle GridView

O controle GridView não executa sua própria a classificação de colunas, mas depende em vez disso do controle da fonte de dados para executar classificação em seu nome.O controle fornece a interface de usuário (UI) para a ordenação, como os controles LinkButton exibidos na parte superior de cada coluna da grade.No entanto, o controle GridView depende dos recursos de classificação de dados do controle da fonte de dados ao qual ele está vinculado.

Se o controle da fonte de dados acoplado pode classificar dados, então o controle GridView pode interagir com a controle da fonte de dados e solicitar dados classificados passando um SortExpression para o fonte de dados quando dados são selecionados.Nem todos os controles de fonte de dados oferecem suporte à classificação; por exemplo, o controle XmlDataSource não oferece suporte.Se o controle da fonte de dados oferecer suporte a classificação, de qualquer modo, o GridView pode aproveitá-lo.A lista a seguir descreve controles de fonte de dados e as configurações necessárias para oferecer suporte a ordenação:

Processo de ordenação do GridView

Você pode habilitar o padrão de comportamento de classificação no controle GridView ao definir sua propriedade AllowSorting como true.A definição dessa propriedade como true faz com que o controle GridView processe um controle LinkButton em cabeçalhos de coluna.O controle também define implicitamente a propriedade SortExpression de cada coluna para o nome do campo de dados ao qual ela está acoplada.Por exemplo, se a grade contém uma coluna que exibe a coluna City da tabela Funcionários no banco de dados de exemplo Northwind, a propriedade SortExpression da coluna que irá ser definida para City.

Em tempo de execução, os usuários podem clicar no controle LinkButton em um título de coluna para classificar essa coluna.Clicar no link faz com que a página execute um postback e lance o controle GridView evento Sorting.A expressão de classificação — por padrão, o nome de coluna de dados — é passado como parte dos argumentos de evento .O comportamento padrão para o evento Sorting é que o controle GridView passa a expressão de classificação para o controle da fonte de dados.O controle da fonte de dados executa sua consulta de seleção ou método, incluindo os classificação de parâmetros passados pela grade.

Após a consulta ser executada, o evento Sorted da grade é gerado.Esse evento permite que você execute um tratamento lógico pós-consulta, como por exemplo exibir uma mensagem de status.Finalmente, o controle da fonte de dados revincula o controle GridView aos resultados da consulta reordenada.

O controle GridView não verifica se o controle da fonte de dados oferece suporte à classificação; ele sempre passa a expressão de classificação para o fonte de dados.Se o controle da fonte de dados não dá suporte a classificação e uma operação de classificação é executada no controle GridView, o controle GridView gera a exceção NotSupportedException.Você pode pegar essa exceção em um manipulador para o evento Sorting e verificar o fonte de dados para determinar se a classificação é suportada, ou usando sua própria lógica de classificação.

Controlando ordenação para colunas individuais

Configurar a propriedade AllowSorting da grade permite que você classifique colunas por padrão.Você pode desativar a classificação dos campos individuais (campo BoundField ou TemplateField, por exemplo), definindo a propriedade SortExpression de coluna individual como uma sequência de caracteres vazia (" ").

Ordenação personalizada

Se o comportamento de classificação padrão não for adequado para suas necessidades, você poderá personalizar comportamento de classificação da grade.A técnica básica para classificação personalizada é manipular o evento Sorting.No manipulador, você pode fazer o seguinte:

  • Personalizar a expressão de ordenação que é passada para o controle de fonte de dados.Por padrão, a expressão de ordenação é o nome de uma única coluna.Você pode modificar a expressão de classificação no manipulador.Por exemplo, se você desejar ordenar por duas colunas, você pode criar uma expressão que inclui ambas ordenações.Depois você poderá passar a expressão de ordenação modificada para o controle de fonte de dados.Para obter mais informações, consulte a propriedade GridViewSortEventArgs.SortExpression.

  • Criar sua própria lógica de ordenação.Por exemplo, se você estiver trabalhando com uma fonte de dados que não oferece suporte à ordenação, você pode executar a ordenação em seu próprio código e depois vincular a grade aos dados classificados.

Consulte também

Conceitos

Visão geral de controle servidor Web com dados vinculados