6

我正在尝试使用 CGridView 的 ajaxUrl 参数,但它没有任何效果。

$this->widget('zii.widgets.grid.CGridView', array(
   'id'=>'ge-cg-'.$myLib['id'],
   'filter'=>$geCGModel,
   'dataProvider'=>$dataProvider, 
   'columns'=>$columns,
   'ajaxUrl'=>Yii::app()->createUrl( 'Something/search' ),
));

这似乎没有覆盖 CGridView 小部件的 ajax url。网格的 ajax 请求仍会发送到呈现它的控制器(与网格自己的控制器不同)。

谢谢!

4

1 回答 1

11

ajaxUrl属性仅适用于搜索,“每列过滤器”和“高级搜索”。排序链接和分页链接是根据$dataProvider您指定的链接生成的。您可以查看 CGridView 和 CDataColumn 的来源,以了解如何分别从 dataProvider 中提取分页排序。

因此,如果您希望这些链接也使用ajaxUrl您要指定的相同链接,那么您必须为routeCPagination 对象和 CSort 对象设置属性$dataProvider,有点像这样:

$dataProvider=new CActiveDataProvider('Modelname',array(
    'criteria'=>$criteria,
    'pagination'=>array(
        'route'=>'something/search'
    ),
    'sort'=>array(
        'route'=>'something/search'
    )
));

这与您当前的 CGridView 设置相结合应该可以按预期工作。

于 2012-09-28T10:50:49.157 回答