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

StackOverflow https://stackoverflow.com/questions/323147

Вопрос

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

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

Спасибо!/Нильс

Это было полезно?

Решение

Здесь есть пример, если это то, что вы ищете: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.query.SortField , я предполагаю, что «это» и «запрос» являются вашими собственными объектами.и почему вы проверяете количество.какой это счет.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top