0

我在 CJuiDialog 中渲染了一个 CGridView,并且工作正常。

我的问题是,每次我单击列标题对记录进行排序时,页面都会更改(url 是通过 ajax 使用 renderPartial 呈现的视图的 url)并且请求不是 ajax(Yii::app()->request->isAjaxRequest控制器内部为 false)。

此外,如果我过滤任何字段,则不会发生任何事情。

如何让用户对 CGridView 进行排序或过滤?

或者:是否有另一种方法可以让用户通过 CGridView 选择外键字段?

4

2 回答 2

0

发生此问题的原因可能是 javascript 错误,或者代码上的 click 函数被覆盖(而不是返回 false)。你能显示你的代码吗?

于 2014-05-13T18:44:22.570 回答
0

我终于找到了解决方案。

当您调用 renderPartial 时,您必须设置第三个参数 = FALSE 和第四个参数 = 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 被多次加载。

于 2014-05-20T12:47:49.757 回答