Hello, I have a CGridView set up with $dataProvider->pagination->pageSize = 8 and $dataProvider->totalItemCount = 8. So basically I want to only display 8 results with no pagination. Everything works great except when I sort. The behavior that I want is that if you sort by a column, it will only sort the 8 items displayed. However, it actually sorts the entire list of results, not just the 1 page that is displayed. Any solution to this? Thanks.
can you display your dataprovider call with csort
All I do is:
$dataProvider = $model->search();
$dataProvider->pagination->pageSize = 8;
$dataProvider->totalItemCount = 8;
I haven’t added any custom CSort stuff, I’m not very familiar with that. Can I use that to make it only sort those 8 items?
I see you using a CGridView you have to define pagination in model->search(),
eg.
public function search(){
$criteria=new CDbCriteria;
$criteria->condition = 'user_id='.Yii::app()->user->id;
$criteria->compare('id',$this->id,true);
$criteria->compare('title',$this->title,true);
$criteria->compare('place',$this->place,true);
return new CActiveDataProvider(get_class($this), array(
'criteria'=>$criteria,
'pagination'=>array(
'pageSize'=>30,
'totalItemCount'=>8,
),
'sort' => array(
'defaultOrder' => 'attribute',
'attributes' => array(
'attributename' => array(
'asc' => 'attributename',
)
)
)
));
}
I don’t think so, because the pagination the way I do it works. It only shows 8 items and 1 page, which is what I want. The search returns a dataProvider so if I save $model->search() to $dataProvider and edit pagination that way it works just fine. The issue doesn’t really have to do with getting the pagination to work normally. I guess everything works as intended.
However, I am trying to alter the functionality of the CGridView sort so that it only sorts the 8 items in the initially displayed table. What I mean is, with totalItemCount=8, it will only show 8 items, even if there are normally 100 results. I want it so that when I sort it ONLY sorts those 8 items, excluding the other 92 items that didn’t show up originally. Thanks.
In first case i dintnt understand what you wont
if you wont to eject the all 92 querys you have to limit criteria then $criteria->limit = 8;
Hmm for some reason it’s still grabbing the other values, but thank you! I will continue to look into this ->limit business.
it will not work $this->limit, you have to use on criteria in your model search you can`t apply to cactivedataprovider.
Thats why i´m suggest you to use all options of CActivedataprovider in $model->search() ![]()