尝试itemCount
在你的明确设置dataProvider
:
'pagination'=>array(
'pageSize'=>10,
'itemCount'=>$count
)
或者使用一个新CPagination
对象:
$pagination = new CPagination($count);
$dataProvider = new CSqlDataProvider($sql, array(
// ... other config
'pagination' => $pagination
));
这是如何工作的:
分页itemCount
是在创建数据提供者期间设置的,并再次在CSqlDataProvider
'fetchData
函数中设置:
$pagination->setItemCount($this->getTotalItemCount());
在创建 data-provider 期间,仅使用传递给pagination
属性的值,如果我们不传递itemCount
值,则使用默认值 of 0
。
因此,如果我们想在调用之前offset
访问orpageCount
或currentPage
or ,我们必须显式设置。itemCount
fetchData
itemCount
但是,如果我们在调用之后想要这些值,fetchData
那么由于对setItemCount
within的调用,这些值已经正确填充fetchData
。
一个清晰的例子(itemCount
在数据提供者创建期间没有传递):
$dataProvider = NodesTerms::getNodesDataFromTerms($nodeId);
$pagination = $dataProvider->getPagination();
var_dump($pagination->getPageCount()); // this will be zero
$data=$dataProvider->getData(); // getData calls fetchData()
var_dump($pagination->getPageCount()); // now this will be correct value