2015-03-12 8 views
0

я настроил cactivedataprovider Yii как документация пишет:Yii cgridview cactivedataprovider не работает должным образом

$criteria = new CDbCriteria(); 
$criteria->together = true; 

$criteria->with = array(
     'relationId0', 
     'relationId1', 
     ... 
); 

$criteria->compare('"relationId0".property0', $this->relationId0_property0, true); 
return new CActiveDataProvider($this, array(
     'criteria' => $criteria, 
     'sort' => array(
      'attributes' => array(
       ... 
       'relationId0.property0' => array(
        'asc' => '"relationId0".property0', 
        'desc' => '"relationId0".property0 DESC', 
       ), 
       ... 
      ) 
     ) 
)); 

так, когда -> вместе ложна, то GridView работает должным образом и получает все строки, что нумерация страниц разрешено, но в этом случае сравнение (так что поиск) не работает (поскольку этот способ не использует связанные объекты в запросе sql),

, но когда -> вместе верно (и это решение предположительно), сравнение но gridview получает случайное количество строк на каждой странице.

Благодарим за помощь.

ответ

0

Попробуйте добавить pagination в ваш поставщик данных.

return new CActiveDataProvider($this, array(
    'criteria' => $criteria, 
    'pagination'=>array('pageSize'=>10), 
    'sort' => array(
     'attributes' => array(
      ... 
      'relationId0.property0' => array(
       'asc' => '"relationId0".property0', 
       'desc' => '"relationId0".property0 DESC', 
      ), 
      ... 
     ) 
    ) 
)); 

Это должно решить вашу проблему.

Смежные вопросы