2016-05-09 10 views
1

私はkartikグリッドを使用していて、テーブルにあるすべての列をエクスポートします。Yii2 kartik gridすべての列をエクスポートする

問題点は、グリッドに表示する列はわずかですが、csvファイルのすべての列をダウンロードしたいという問題です。

可能ですか?

私のコード

<?php 

$gridColumns = [ 
    ['class' => 'kartik\grid\SerialColumn'], 
    [ 
     'class' => 'kartik\grid\EditableColumn', 
     'attribute' => 'Name',   
     'vAlign'=>'middle', 
     'headerOptions'=>['class'=>'kv-sticky-column'], 
     'contentOptions'=>['class'=>'kv-sticky-column'], 
     'editableOptions'=>['header'=>'Name', 'size'=>'255'], 
     'format'=>'text', 
    ], 
    [ 

     'attribute' => 'Description',   
     'vAlign'=>'middle', 
     'headerOptions'=>['class'=>'kv-sticky-column'], 
     'contentOptions'=>['class'=>'kv-sticky-column'],  
     'format'=>'text', 
    ], 
    ['class' => 'kartik\grid\DataColumn', 
     'attribute' => 'image', 
     'format' => 'html', 
     'value' => function($model, $key, $index, $column) {   
       return Html::img('http://localhost/demo/basic_demo/web/www/img/'.$model->image, ['class' => 'abc','width'=>70,'height'=>70]);   
     }, 
    ], 
    [ 
     'class'=>'kartik\grid\BooleanColumn', 
     'attribute'=>'Status', 
     'vAlign'=>'middle', 
    ], 

    [ 
     'class' => 'kartik\grid\ActionColumn', 
     'dropdown' => true, 
     'vAlign'=>'middle',  
     'viewOptions'=>['title'=>'viewMsg', 'data-toggle'=>'tooltip'], 
     'updateOptions'=>['title'=>'updateMsg', 'data-toggle'=>'tooltip'], 
     'deleteOptions'=>['title'=>'deleteMsg', 'data-toggle'=>'tooltip'], 

    ], 
    [ 
      'class' => '\kartik\grid\ExpandRowColumn', 
      'header' => '', 
       'value' => function ($model, $key, $index) { 
       return GridView::ROW_COLLAPSED; 
      }, 
      'detailUrl' =>Url::to(['expenses/viewdetail']), 
    ], 

]; 



echo GridView::widget([ 
    'dataProvider'=> $dataProvider, 
    'filterModel' => $searchModel, 
    'columns' => $gridColumns, 
    'autoXlFormat'=>true, 
    'responsive'=>true, 
    'hover'=>true, 
    'condensed'=>true, 
    'floatHeader'=>true, 
    'bordered'=>true, 
    'toolbar'=>['{export}', 
        '{toggleData}',], 
    'showPageSummary'=>true, 
    'panel'=>[ 
     'heading'=>'<h3 class="panel-title"><i class="glyphicon glyphicon-globe"></i> '. Html::encode($this->title).'</h3>', 
    'type'=>'primary', 
    'before'=>Html::a('<i class="glyphicon glyphicon-plus"></i>Create Expenses', ['create'], ['class' => 'btn btn-primary']), 
    'showFooter'=>false 

    ], 
    'pjax'=>true, 
    'export'=>[ 
     'fontAwesome'=>true, 
     'showConfirmAlert'=>false, 
     'target'=>GridView::TARGET_BLANK, 

    ], 


]); 

?> 

答えて

0

あなたはすべての列を追加し、グリッドビューに表示したくない'hidden' => trueプロパティを設定し、あなたのgird列リストで、次のように行うことができますが、この列には、ときに、CSVで提供されますあなたはcsvをエクスポートします。たとえば、ここでは、私はあなたがこのことをすべての列に実装できる1つの列を示しているとします。以下のコード例を確認してください。

[ 

      'attribute' => 'Description',   
      'vAlign'=>'middle', 
      'headerOptions'=>['class'=>'kv-sticky-column'], 
      'contentOptions'=>['class'=>'kv-sticky-column'], 
      'hidden' => true, 
      'format'=>'text', 
     ], 

ここで、説明列はガードビューに表示されず、エクスポートされたファイルに存在します。それがあなたに役立つことを願っています。

0

Webページで使用されている通常の$ gridColumnsではなく、完全なグリッド列で別の配列を渡すことをお勧めします。それをきれいに保つために、$ searchModelにはグリッド列用とエクスポート列用の2つの関数があります。検索モデルで

ExportMenu::widget([   
    'dataProvider' => $dataProvider, 
    'columns' => $searchModel->getExportColumns(), 
    ... 
]); 

:エクスポートメニューを設定するときに、ちょうどあなたの列を返す関数を呼び出す

public function getGridColumns(){ 
    return [ 
     // page columns 
    ]; 

public function getExportColumns(){ 
    return [ 
     // export columns 
    ]; 
関連する問題