Yii CGridView, отображаемый внутри CJuiDialog, не будет фильтроваться или упорядочиваться
Я рендеринг CGridView внутри CJuiDialog, и это работает нормально.
Моя проблема заключается в том, что каждый раз, когда я щелкаю заголовок столбца для сортировки записей, страница меняется (URL-адрес - это URL-адрес представления, отображаемого с помощью renderPartial через ajax), а запрос не является ajax (Yii::app()->request->isAjaxRequest
внутри контроллера ложно).
Кроме того, если я фильтрую любое поле, ничего не происходит.
Как я могу позволить пользователю сортировать или фильтровать CGridView?
ИЛИ: есть ли другой способ позволить пользователю выбрать поле внешнего ключа через CGridView?
2 ответа
Я наконец нашел решение.
Когда вы вызываете renderPartial, вы должны установить 3-й параметр = FALSE и 4-й параметр = TRUE.
$this->renderPartial('ajax_view',array(
'model'=>$model,
'dataProvider'=>$dataProvider,
),false,TRUE);
Из официальной документации:
$ return boolean следует ли возвращать результат рендеринга вместо того, чтобы отображать его конечным пользователям.$ processOutput boolean, следует ли обрабатывать результат рендеринга с помощью processOutput.
И НАИБОЛЕЕ ВАЖНЫЙ Твик: В представлении, отображаемом с помощью renderPartial, вы должны добавить:
Yii::app()->clientscript->scriptMap['jquery.js'] = false;
Страница перезагружается просто потому, что jquery был загружен несколько раз.
Эта проблема, вероятно, возникает из-за ошибки JavaScript или функции щелчка в вашем коде, которая переопределяется (а не возвращает false). Не могли бы вы показать свой код?