如果通过ajax附加到页面CGridView('myGridViewID'),我无法重新加载它。
$.fn.yiiGridView.update('myGridViewID');
类型错误:设置未定义
$grid.addClass(settings.loadingClass);
在控制器动作中使用 renderPartial:
$cs = Yii::app()->clientScript;
$cs->reset();
$cs->scriptMap = array(
'jquery.js' => false, // prevent produce jquery.js in additional javascript data
);
// Look at 4th parameter: with TRUE value, your view will have additional javascript data.
$this->renderPartial('_partialViewWithGrid', array(), false, true);
这是同一视图中动态CgridViews的 wiki。那应该行得通。
动态加载的 CGridViews(以及包含 ajax 的所有内容)的问题是 CController::renderPartial() 不会呈现所需的 javascript 代码以使其正常工作,这与包含所需布局和 JS 的 CController::render() 不同。
有一个名为 ZController 的扩展程序提供了解决此问题的方法,但由于重新加载 CGridviews 的方式(通过对同一 URL 进行 ajax 调用)...当您尝试过滤/排序/分页通过 AJAX 加载的 CGridView ,随后的 Ajax 调用将替换您浏览器窗口的全部内容,但老实说,我认为也许(只是也许)这种解决方法可能会有所帮助,但我没有时间尝试它。
这就是我目前避免使用 AJAX 加载 CGridViews的原因。