我有一个cgridview在另一个cgridview中:外层为:
$this->widget('application.modules.user.components.CsvGridView', array(
'dataProvider'=>$model->mySearch(),
'filter' => $model,
'id'=>'users-grid',
...
内部的一个是:
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'vacr-grid',
'dataProvider'=>$model->searchu(),
// 'pager'=>false,
// 'enableSorting'=>false,
'summaryText'=>'',
'ajaxUpdate'=>'vacr-grid',
'columns'=>array(
'start',
'end',
array(
'name' => 'vac_type',
'value' =>
'isset($data->vacType->name)?$data->vacType->name:$data->vac_type'
),
),
));
问题是内部的一个没有正确更新(当然用 AJAX 更新)。
例如,当我在内部cgridview中单击“下一步”时,请求的URL是:请求URL:http://www. aspx. com-2016年08月归档的文件
请注意,users-grid是外部cgridview的id。然后,在我单击“下一步”后,内部和外部cgridview都消失了。
我尝试使用ajaxUpdate属性,但它不会影响任何东西。谢谢。
2条答案
按热度按时间iqxoj9l91#
这和我遇到的问题很相似。排序和分页URL是由dataProvider设置的,而搜索URL是由ajaxUrl设置的。要在上下文之外使用CGridView,必须设置所有这三个URL。
单独设置数据提供程序:
还有我类似的问题......
如何在Yii中使用CGridView的ajaxUrl参数?
qlfbtfca2#
嵌套CGridView时,CGridView的两个非常重要的配置选项是
updateSelector
和filterSelector
!默认情况下,这些选择器针对GridView中所有可用的分页/排序链接。因此,单击嵌套网格视图中的排序链接也会导致所有父GridView更新。因此,如果出现问题,您必须调整这些选择器(可能是)只选择网格视图的直接后代,而不选择子网格视图的直接后代。如果子网格视图有其他ID,则反之亦然。因此,您的父GridView(大多数情况下需要)选择器如下所示(注意“大于”符号的使用):
现在子网格视图可以独立于父网格视图进行更新。子节点的网格视图id必须重新出现在 AJAX 请求中,否则它的内容将不会被放置在触发请求的页面/网格视图中!