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). Не могли бы вы показать свой код?

Другие вопросы по тегам