Yii1 CGridView - 页脚中自定义列值的和

时间:2015-08-06 05:16:27

标签: yii cgridview

我想要页脚中自定义列值的总和

GridView代码

$this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'booking-grid',
    'dataProvider'=>$model->search(),
    'columns'=>array(
         array(
             'name'=>'name',
             'header'=>'User Name',
             'value'=>'$data->booking_id',
             'filter'=>false,
             'footer'=>'Total',
             'footerHtmlOptions'=>array('class'=>'grid-footer'),
         ),
         array(
             'name'=>'id',
             'header'=>'User Fee',
             'value'=> array($model,'GetUserFee'),
             'filter'=>false,
             'footer'=>'' . $model->getTotal($model->search()->getData(), 'id'),
             'footerHtmlOptions'=>array('class'=>'grid-footer'),
         ),
    ),
));

获取总计

public function getTotal($records,$colName){        
        $total = 0.0;

        if(count($records) > 0){
            foreach ($records as $record) {
                    $total += $record->$colName;
            }
        }
        return number_format($total,2);
    }
  1. 第二列值是计算用户费用。

  2. 在用户费用值的页脚总和中得到错误的总和。它给出了用户ID的总和。和id是表列名。

  3. 如何获取用户费用列值的总和

1 个答案:

答案 0 :(得分:1)

不要使用id的文字表示,而是尝试使用CGridView创建的$data变量,它实际上是当前正在每个CGridView迭代中处理的$model的当前记录。

您的代码将是:

array(
    'name'=>'id',
    'header' => 'User Fee',
    'type' => 'raw',
    'value' => '$data->id',
    'filter' => false,
    'footer' => '$model->getTotal($data)',
    'footerHtmlOptions' => array('class'=>'grid-footer'),
),

请注意type属性的值设置为raw 您甚至可以使用PHP函数并将$data变量传递给它,如下所示:

array(
    'name'=>'id',
    'header' => 'User Fee',
    'type' => 'raw',
    'value' => function ($data) { ... handle $data how you like ... }
    'filter' => false,
    'footer' => '$model->getTotal($data)',
    'footerHtmlOptions' => array('class'=>'grid-footer'),
),

有关详细信息,请查看special variables in Yii

相关问题