Flex: база данных, управляемая DataGrid: стрелки исчезают - PullRequest
1 голос
/ 27 ноября 2008

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


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

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

Спасибо! / Niels

Ответы [ 3 ]

5 голосов
/ 23 декабря 2008

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

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

1 голос
/ 11 мая 2011

Я столкнулся с той же проблемой, и единственное решение, которое я нашел, было переопределить 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 и задаете индекс столбца и информацию о направлении.

0 голосов
/ 25 марта 2009

в вышеприведенном коде, что означает «this», это сетка данных, потому что меня смущает this.query.SortField, я предполагаю, что «this» и «query» - ваши собственные пользовательские объекты. для подсчета. что это за подсчет.

С уважением -Mohan

...