booomerang
@booomerang
Разработчик крутизны

Как отфильтровать результаты в CGridView не только по нажатию enter?

Добрый день! Проблема следующая: Есть грид с данными + фильтры. Фильтр по дате работает через виджет YiiBooster'а - TbDateRangePicker. Проблема в том, что фильтр должен срабатывать при выборе даты (кликом), т.е выбрал дату - "За эту неделю", и сразу грид должен обновляться, а сейчас работает только после нажатия кнопки enter.

Т.е выбрал значение(дату), эта дата подставляется в поле и ничего не фильтруется, пока не нажмёшь enter. В коде выводе виджета есть какой-то параметр 'callback', я туда вставил функцию $.fn.yiiGridView.update() с id грида, и функция отрабатывает, но не высылает данные формы, т.е. просто делает ajax запрос без данных :). Как быть, не понятно, в Yii я очень и очень недавно...

Прилагаю скрин фильтра по дате, чтоб примерно было понятно, о чём идёт речь: 401099ffdd07427fb513dcc7794e3ccd.png
  • Вопрос задан
  • 2710 просмотров
Решения вопроса 1
karneds
@karneds
Попробуй вот такой callback
'callback' => 'js:function(){$(this.element).change();}'

Блин, почти оно! Срабатывает при выборе, но только один раз ;'-(. Т.е я выбираю, например за этот месяц, данные фильтруются, но когда хочу повторно поменять фильтр, например уже - за текущий год, то ничего не отрабатывает...


Надо заново инициализировать плагин daterangepicker, чтобы он снова заработал
Делается примерно так

В настройках грида
'afterAjaxUpdate' => 'reinstallDatePickers',

И после или до грида
Yii::app()->clientScript->registerScript(
    'reinstall','
function reinstallDatePickers(id,data){
        $("#Orders_created").daterangepicker({настройки грида}, function(){
            $(this.element).change();
        });
');
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы