Php Yii CArrayDataProvider不更新GridView上的活动页面
我正在使用yii引导窗口小部件TbGridView查看数据库表中的数据 每个页面请求我使用偏移量从API获取数据,并根据API的结果更新网格视图Php Yii CArrayDataProvider不更新GridView上的活动页面,php,twitter-bootstrap,yii,Php,Twitter Bootstrap,Yii,我正在使用yii引导窗口小部件TbGridView查看数据库表中的数据 每个页面请求我使用偏移量从API获取数据,并根据API的结果更新网格视图DataProvider 为此,我使用了CArrayDataProvider 我的问题是,在第一次请求时,它会返回记录,并在网格视图上显示分页上的所有页面,当我在分页上单击任何页面时,它会按偏移量返回数据,但网格视图不会在单击的页面上添加活动类 我在分页选项中设置了currentPage=0,如果我删除此选项并单击分页上的任何页面,它将返回未找到结果,尽
DataProvider
为此,我使用了CArrayDataProvider
我的问题是,在第一次请求时,它会返回记录,并在网格视图上显示分页上的所有页面,当我在分页上单击任何页面时,它会按偏移量返回数据,但网格视图不会在单击的页面上添加活动类
我在分页选项中设置了currentPage=0,如果我删除此选项并单击分页上的任何页面,它将返回未找到结果,尽管在我的数据提供程序上有结果
我的代码是:
这是我的数据提供者
$offset = $limit * ($page_no-1) ;
$arr_transaction = $obj_transaction->getTransactionByOffset($offset);
$total_record = $total_record = $obj_transaction->getTotalRecord();
$dp_transactions = new CArrayDataProvider($arr_transaction,
array('id'=>'transactions',
'keyField' => false,
'pagination'=>array(
'pageSize'=>10,
'params' => array('date_from' => $transaction_form->date_from,'date_to'=>$transaction_form->date_to),
'currentPage'=>0,
),
'totalItemCount'=>$total_record,
));
这是我的网格视图
<?php
$this->widget('bootstrap.widgets.TbGridView', array(
'type'=>'striped bordered condensed',
'dataProvider'=>$dp_transactions,
'template' => "{summary}{items}{pager}",
'enablePagination'=>true,
'columns'=>array(
array('name'=>'ust_order_Id', 'header'=>'Oreder Id'),
array('name'=>'ust_create_time', 'header'=>'Transaction Time'),
array('name'=>'ust_email', 'header'=>'Email'),
array('name'=>'ust_mobile_number', 'header'=>'Mobile Number'),
array('name'=>'ust_amount', 'header'=>'Amount'),
),
));
?>
我不需要向CArrayDataProvide提供所有数据
任何人都可以帮助我
感谢这是CArrayDataProvider的“缺陷”
:数组长度必须大于(当前第1页)*页面大小
。
因此,可以将空值填充到数组中:
$offset = $limit * ($page_no-1) ; // it means $page_no is current page number
$arr_transaction = $obj_transaction->getTransactionByOffset($offset);
$total_record = $total_record = $obj_transaction->getTotalRecord();
$arr_transaction = array_pad($arr_transaction, -1*(count($arr_transaction) + $offset), null);
$dp_transactions = new CArrayDataProvider($arr_transaction,
array('id'=>'transactions',
'keyField' => false,
'pagination'=>array(
'pageSize'=>$limit, // $limit = 10 ?
'params' => array('date_from' => $transaction_form->date_from,'date_to'=>$transaction_form->date_to),
// 'currentPage'=>0, this not needed
),
'totalItemCount'=>$total_record,
));
当您使用CArrayDataProvider时,您不需要设置偏移量,grid view将为您处理。谢谢您的评论,我在CArrayDataProvider中不使用偏移量,我使用offest从我的表中获取数据,因此每次CArrayDataProvider将只有10条记录。您正在设置“currentPage”=>0,
在CArrayDataProvider中
…尝试使用偏移量和限制计算当前页面