2012-09-27 25 views
6

我試圖使用CGridView的ajaxUrl參數,它沒有任何效果。如何在Yii中使用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請求仍然會傳送給呈現它的控制器(這與網格自己的控制器不同)。

謝謝!

回答

10

ajaxUrl屬性僅適用於搜索,「每列過濾器」和「高級搜索」。排序鏈接和分頁鏈接是從您指定的$dataProvider生成的。您可以檢查CGridView和CDataColumn的來源,看看如何分別從dataProvider中提取paginationsorting

因此,如果你想這些鏈接也使用相同的ajaxUrl要指定,那麼你必須設置route屬性既CPagination對象,並且$dataProvider的CSort對象,有點像這樣:

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

這與您當前的CGridView設置相結合應該按預期工作。

+0

我希望我能夠正確地找到你,但是再次查看你的網址,似乎你想讓搜索與ajaxurl一起工作(不僅僅是分頁和排序)。搜索應該沒有做出我在答案中提到的更改,所以如果您的搜索沒有工作,讓我知道。 –

+1

優秀。謝謝。我最終通過創建輔助ajax請求來解決這個問題,該請求默認所有的URL都是正確的,但這在未來應該是有用的。 – glyph

+0

很高興幫助,但我只是好奇,是你的搜索工作與該ajaxUrl?如果不是,你能告訴我,如果這是你的gridview的整個配置(減去列)?或者你還定義了其他一些屬性?也讓我知道你的yii版本。 –