簡體   English   中英

Yii CArrayDataProvider不會更新GridView上的活動頁面

[英]Yii CArrayDataProvider does not update active page on GridView

我正在使用yii bootstrap小部件TbGridView來查看數據庫表中的數據。

evry頁面請求我使用offset從我的API獲取數據,然后從API的結果更新grid view databrovider

為此使用了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 “缺陷”:數組的長度必須大於(CURRENT_PAGE-1) * PAGE_SIZE 因此,您可以將空值填充到數組中:

$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,
));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM