2016-08-12 10:29:14 4135次浏览 3条回答 0 悬赏 100 金钱
<?php
$columns = [
    '总收益',
    '总销量',
    '总下单',
    [
        'attribute'=>'总转换率',
        'value' => function($data){
                if($data['总下单'] != 0)
                    return sprintf("%.4f",$data['总销量']/$data['总下单'])*100 . '%';
        },
    ]
];
echo GridView::widget([
    'dataProvider' => $provider['sumData'],
    'columns' => $columns,
]);

?>
<?= ExportMenu::widget([ 'exportConfig' => [ ExportMenu::FORMAT_PDF => false ],
    'dataProvider' => $provider['sumData'],
    'columns' => $columns,
]);?>

第一个输出的是分页列表
第二个将数据导出excel格式
问题是:导出的时候只能导出分页的数据,怎么才能导出全部的数据

补充于 2016-08-12 11:06

。。。。。。

最佳答案

  • xczizz 发布于 2016-08-12 10:45 举报

    吧分页关了,pagination => false, 这样做的话,数据量太大的情况下加载时间会超长,你懂得。

    5 条回复
    回复于 2016-08-12 11:07 回复

    但是pagination => false关了,第一个分页就显示不出来了,毕竟我只是想第二个是导出全部数据,第一个还是能做分页的

    回复于 2016-08-12 11:10 回复

    有个办法就是增加一个dataProvide,专门提供给export导出全部数据,就是考虑到要加载数据量太大,才提问题看有没有更好的办法,比如不需要提前加载数据,只需要export的时候才去遍历所有的数据并导出

    回复于 2016-08-12 11:26 回复

    那就专门给导出做一个吧,我也没想到更好的办法

    回复于 2016-08-12 11:44 回复

    再等几天吧,看有没有大神指导下

    回复于 2016-08-12 11:45 回复

    突然想到导出再做一个,本来就是export的时候才去遍历所有的数据,而不是提前加载好了,这样想得话果然是这样。好的,分给你了

  • 回答于 2017-02-25 06:52 举报

    遇到相同问题,看来解决方法一样,不知道有别的方法不? 一直以为yii2会提供一个方法类似getAllModels,看来目前还没有, 只有totalCount

  • 回答于 2017-09-08 12:02 举报

    $dataProvider->pagination = false;
    $dataProvider->sort = false;

    觉得很赞
您需要登录后才可以回答。登录 | 立即注册
Danmo
总监

Danmo 北京

注册时间:2016-05-13
最后登录:2021-11-01
在线时长:60小时33分
  • 粉丝85
  • 金钱2880
  • 威望120
  • 积分4680

热门问题