【发布时间】:2018-04-13 21:36:17
【问题描述】:
我有一个 GridView 表,我想在其中计算余额,因为在数据库中只有借方和贷方。
我在模型中添加了一个新的对象变量balance 和一个类变量tempBalance,它保持最后的平衡。
在 SearchModel 中,我有以下几行来计算余额
private function calculateBalance($dataProvider) {
foreach ($dataProvider->models as $model) {
$model->balance = parent::$tempBalance + $model->debit - $model->credit;
parent::$tempBalance = $model->balance;
}
}
这很好用,但是当我在 GridView 中有超过 20 个结果时,它会自动生成每 20 条记录的页面(我想保留这个分页)。问题是,在每一页上,saldo 都以 0 开头,但我显然仍然希望保留上一页最后一个条目的saldo。
我试图关闭计算的分页,然后再次打开它,但这就是我挣扎的地方。
我尝试在calculateBalance() 方法中的foreach-loop 之前关闭分页:
$pagination = $dataProvider->getPagination();
$dataProvider->setPagination(false);
然后通过以下代码在循环后再次打开它:
$dataProvider->setPagination($pagination);
但这并没有再次打开分页。分页仍然关闭。
有没有办法在我的计算中忽略分页,或者它是关闭并重新打开分页的正确方法?
关闭后如何打开分页?
【问题讨论】: