Как сбросить состояние изображения направления сортировки (треугольник) в заголовке панели сетки в ExtJS 4

Есть сетка панели. После некоторых действий пользователя (таких как переход на другую страницу сетки или применение фильтров к столбцу сетки или изменение порядка сортировки в каком-либо столбце (в моем случае сортировка удалена)) запрос отправляется на сервер и возвращает соответствующий результат. Но в некоторых случаях мне нужно получить подтверждение от пользователя, чтобы продолжить запрос.

Выяснилось, что самый удобный способ прервать отправку запроса и показать пользователю подтверждающее сообщение — это перехватить событие «до загрузки» магазина и вернуть «ложь», если пользователь говорит «нет».

Итак, проблема описана ниже. Вот наше начальное состояние (см. направление сортировки): введите здесь описание изображения

затем пользователь изменяет порядок сортировки в этом столбце, запрос собирается быть отправленным на сервер, но пользователь получает подтверждающее сообщение, говорит «нет», и запрос прерывается. Таким образом, данные в сетке не меняются (и это правильно), но изображение в заголовке меняется в другом направлении введите описание изображения здесь

Хорошо, есть ли способ вернуть изображение «сортировка треугольников» в правильное состояние? заранее спасибо


person Stanislau    schedule 23.10.2013    source источник


Ответы (2)


Попробуй это:

var headerEl = grid.headerCt.items.get(colIndex).el;
el.removeCls('x-column-header-sort-ASC')
el.addCls('x-column-header-sort-DESC')
person kevhender    schedule 23.10.2013
comment
в конце концов я нашел несколько вариантов, основанных на вашем решении, но, к сожалению, есть еще одна проблема. Применение стилей изменяет изображение «треугольника» в правильном направлении, но сама сетка имеет какое-то (я не знаю, как сказать) состояние. что это значит? например, сортировка по умолчанию в столбце - ASC, пользователь нажимает для сортировки в порядке DESC, затем пользователь говорит «нет» в диалоговом окне подтверждения, и изображение «треугольник» будет выглядеть как «ASC», и это нормально. но если пользователь снова нажимает на сортировку DESC, ничего не происходит, потому что сетка уже находится в «состоянии DESC». он помнит, что DESC был нажат минуту назад - person Stanislau; 23.10.2013

Итак, полное решение, которое отлично работает для меня:

  1. подготовительный шаг: хранить где-то все состояние, которое вам нужно (в моем случае столбец и порядок сортировки)

  2. изменить CSS, как предложил @kevhender

  3. вызвать 'your_grid_panel'.headerCt.clearOtherSortStates('saved_column'). поскольку пользователь может щелкнуть любой столбец, вам нужно очистить все, кроме «сохраненного_столбца».

  4. сделать 'saved_column'.sortState = 'saved_sorting_order'. это позволяет избежать проблемы, которую я описал в комментарии к предыдущему ответу.

person Stanislau    schedule 24.10.2013