Pergunta

No Flex eu estou usando o código a seguir para permitir a classificação em um DataGrid (os dados são paginados e serverside ordenada).

        private function headerReleaseHandler(event:DataGridEvent):void
        {
            var column:DataGridColumn = DataGridColumn(event.currentTarget.columns[event.columnIndex]);

            if(this.count>0)
            {
                if(this.query.SortField == column.dataField)
                {
                    this.query.SortAscending = !this.query.SortAscending;
                }
                else
                {
                    this.query.SortField = column.dataField;
                    this.query.SortAscending = true;
                }
                this.fill();
            }

            event.preventDefault();
        }

Isso funciona perfeitamente, exceto que as setas que indicam ordenação não é mostrado. Como posso conseguir isso?

Obrigado! / Niels

Foi útil?

Solução

Há um exemplo aqui se é isso que você está procurando: http://blog.flexexamples.com/2008/02/28/displaying-the-sort-arrow-in-a-flex-datagrid-control-without-having-to-click- uma coluna /

Parece que você precisa para atualizar a coleção usada pelo seu dataprovider.

Outras dicas

Eu encontrei o mesmo problema e que a única solução que eu encontrei foi a de substituir o DataGrid e criar um personalizado. Aqui é a classe:

public class DataGridCustomSort extends DataGrid
{

    public function DataGridCustomSort()
    {
        super();

        addEventListener(DataGridEvent.HEADER_RELEASE,
            headerReleaseHandlerCustomSort,
            false, EventPriority.DEFAULT_HANDLER);
    }       

    public function headerReleaseHandlerCustomSort(event:DataGridEvent):void {
        mx_internal::sortIndex = event.columnIndex;
        if (mx_internal::sortDirection == null || mx_internal::sortDirection == "DESC")
            mx_internal::sortDirection = "ASC";
        else
            mx_internal::sortDirection = "DESC";
        placeSortArrow();
    }

}

Você tem que chamar especificamente o método placeSortArrow () quando você começa o evento HEADER_RELEASE e definir o índice de coluna e informações de direção.

no código acima o que significa "presente" referem-se é o datagrid porque estou confuso com this.query.SortField, estou assumindo 'isto' e "consulta' são os seus próprios objetos personalizados. E por que você está verificando para a contagem. o que conta é que.

Saudações -Mohan

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top