【问题标题】:How do I use the ajaxUrl parameter of CGridView in Yii?Yii中如何使用CGridView的ajaxUrl参数?
【发布时间】:2012-09-27 17:08:26
【问题描述】:

我正在尝试使用 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 请求仍然会发送到渲染它的控制器(与网格自己的控制器不同)。

谢谢!

【问题讨论】:

    标签: ajax yii


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 我希望我的理解正确,但再次查看您的网址,您似乎希望搜索与该 ajaxurl 一起工作(不仅仅是分页和排序)。搜索应该可以在不进行我在答案中提到的更改的情况下工作,所以如果您的搜索不起作用,请告诉我。
    • 优秀。谢谢你。我最终通过发出辅助 ajax 请求来解决它,该请求将所有内容默认为正确的 url,但这在将来应该很有用。
    • 很高兴为您提供帮助,但我很好奇,您的搜索是否与该 ajaxUrl 一起工作?如果不是,你能告诉我这是否是你对 gridview 的全部配置(减去列)?或者您还定义了一些其他属性?也让我知道你的 yii 版本。
    • 是的,它正在工作。我没有意识到设置了搜索网址,但没有设置排序和页面。我认为所有 3 都将由 ajaxUrl 设置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多