Domanda

In Flex sto usando il seguente codice per consentire l'ordinamento in un DataGrid (i dati sono paginati e ordinati sul lato server).

        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();
        }

Funziona perfettamente, tranne per il fatto che le frecce che indicano l'ordinamento non sono mostrate. Come posso farlo?

Grazie! / Niels

È stato utile?

Soluzione

C'è un esempio qui se questo è quello che stai cercando: http://blog.flexexamples.com/2008/02/28/displaying-the-sort-arrow-in-a-flex-datagrid-control-without-having-to-click- una colonna /

Sembra che tu debba aggiornare la raccolta utilizzata dal tuo provider di dati.

Altri suggerimenti

Ho riscontrato lo stesso problema e l'unica soluzione che ho trovato è stata quella di sostituire DataGrid e crearne uno personalizzato. Ecco la 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();
    }

}

Devi chiamare specificamente il metodo placeSortArrow () quando ottieni l'evento HEADER_RELEASE e imposti l'indice di colonna e le informazioni sulla direzione.

nel codice precedente cosa significa "questo" mi riferisco al datagrid perché sono confuso da this.query.SortField, presumo che 'this' e " query 'siano i tuoi oggetti personalizzati. e perché stai controllando il conteggio. che conta è quello.

Saluti -Mohan

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top