Yii CGrid разбиение на страницы и сортировка с помощью CArrayDataProvider не работает

Я создал пользовательскую функцию в своей модели и возвратил необработанные данные:

function(){ ... $connection=Yii::app()->db; $command=$connection->createCommand($sql); $rows=$command->queryAll(); return $rows; } 

$ campModel = $ model-> function ..

Затем я использую эти строки в CArrayDataProvider:

 $dataProvider=new CArrayDataProvider($campModel); 

Наконец, я пытаюсь просмотреть с помощью CGrid:

 $this->widget('zii.widgets.grid.CGridView', array( 'id'=>'bo-campaigns-grid', 'dataProvider'=>$campModel,... 

Я предполагаю, что это связано с тем, как CGrid пейджинг … но я потерял Спасибо за помощь 🙂

Solutions Collecting From Web of "Yii CGrid разбиение на страницы и сортировка с помощью CArrayDataProvider не работает"

Создайте новые объекты CSort и CPagination и назначьте их вашему датаподатчику, потому что CArrayDataProvider не определил их. Вот пример создания CSort:

 $dataProvider=new CArrayDataProvider($campModel); $sort = new CSort(); $sort->attributes = array( 'fecha'=>array( 'asc'=>'dateA DESC', 'desc'=>'dateA ASC', ), ); $sort->route = 'myController/myMethod'; $dataProvider->sort = $sort; $dataProvider->sort->defaultOrder='dateA DESC'; 

попробуй это,

 $this->widget('zii.widgets.grid.CGridView', array( 'id' => 'bo-campaigns-grid', 'dataProvider'=> new CArrayDataProvider($campModel, array( 'pagination' => array( 'pageSize' => 10 ) )), ... 

Вы также можете посмотреть на CSqlDataProvider. Не уверен, что это даст вам гибкость SQL, в которой вы нуждаетесь, но она должна обрабатывать сортировку для вас легче, чем CArrayDataProvider