Flex: база данных, управляемая DataGrid: стрелки исчезают

Во Flex я использую следующий код, чтобы разрешить сортировку в DataGrid (данные разбиты на страницы и отсортированы на стороне сервера).

        приватная функция headerReleaseHandler(событие:DataGridEvent): пустота
        {
            var column:DataGridColumn = DataGridColumn(event.currentTarget.columns[event.columnIndex]);

            если (this.count>0)
            {
                if(this.query.SortField == column.dataField)
                {
                    this.query.SortAscending =!this.query.SortAscending;
                }
                еще
                {
                    this.query.SortField = column.dataField;
                    this.query.SortAscending = true;
                }
                this.fill ();
            }

            event.preventDefault ();
        }

Это работает отлично, за исключением того, что стрелки, обозначающие сортировку, не отображаются. Как я могу это сделать?

Спасибо! /Niels

3 ответа

Решение

Вот пример, если это то, что вы ищете: http://blog.flexexamples.com/2008/02/28/displaying-the-sort-arrow-in-a-flex-datagrid-control-without-having-to-click-a-column/

Похоже, вам нужно обновить коллекцию, используемую вашим провайдером данных.

Я столкнулся с той же проблемой, и единственное решение, которое я нашел, было переопределить DataGrid и создать пользовательский. Вот класс:

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

}

Вы должны специально вызывать метод placeSortArrow() при получении события HEADER_RELEASE и устанавливать индекс столбца и информацию о направлении.

В приведенном выше коде к слову "this" относится это сетка данных, потому что меня смущает this.query.SortField, я предполагаю, что "this" и "query" являются вашими собственными объектами и почему вы проверяете счетчик. какой счет это.

С уважением Мохан

Другие вопросы по тегам