2019-05-02 07:41 阅读 260


I have a Gridview with data from a table which normally is ok as it is. But in some cases i have to manipulate the data, and i can't just do it from the query as there are many different cases and requires complex calculations.

Example: base data loaded from db:

date        price   buy_price
2019-05-01  15.75   10
2019-05-02  20.15   10.50

same data which passed through complex calculations

date        price   buy_price
2019-05-01  3.75   3
2019-05-02  4.70   3.10

I would like to use GridView cause the ajax filtering and sorting are really useful.

How can i manipulate the data AFTER the query the Gridview executes based on the DataProvider?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

1条回答 默认 最新

  • 已采纳
    doucheng7808 doucheng7808 2019-05-02 09:23

    As an example in Yii2 Documentation about GridvViews says, you can manipulate any column to your need in the following way:

    echo GridView::widget([
    'dataProvider' => $dataProvider,
    'columns' => [
        ['class' => 'yii\grid\SerialColumn'],
        // Simple columns defined by the data contained in $dataProvider.
            'attribute' => 'price',
            'value' => function ($model) {
                return $model->getValue();  // Here you can manipulate the data as you wish.
            'attribute' => 'buy_price',
            'value' => function ($model) {
                return $model->buy_price * 2;  //Here you can manipulate the data as you wish.

    After manipulating data, you can still use the sort or the ajax filtering.

    点赞 评论 复制链接分享