2017-05-29 1 views
0

レポートテーブルと列report_id, reference_numberreport_nameがあります。データの一部は同じreference_numberです。表示ボタン付きグリッドビューに表示されます。Yii2は適切な手配でデータを表示しています

私が望むのは、特定の行のビューボタンをクリックすると、その行のデータが表示され、同じものが選択されたreference_numberの行が表示されます。今のところ、私は同じreference_numberのすべてのレコードを表示することができますが、私が欲しいのは、特定の行をクリックすると、上部に表示され、その他の詳細はそのすぐ下に表示されます。

$gridColumns = [ 
      ['class' => 'yii\grid\SerialColumn'], 
      'report_id', 
      'reference_no', 
      'subject', 
      'doc_date', 
      [ 
       'label' => 'For', 
       'value' => 'namefor.fullName', 
      ], 
      [ 
       'label' => 'From', 
       'value' => 'namefrom.fullName', 
      ], 
      'drawer_id', 
      'user_id', 
      'doc_name', 
      [ 
       'class' => 'yii\grid\ActionColumn', 
      ], 
      [ 
       'attribute' => '', 
       'format' => 'raw', 
       'value' => function($data) 
       { 
        return Html::a('', ['report/download', 'id' => $data->reference_no],['class' => 'fa fa-download']); 
       } 
      ], 
     ]; 
    echo 

    // ExportMenu::widget([ 
    //  'dataProvider' => $dataProvider, 
    //  'columns' => $gridColumns 
    // ]); 

    GridView::widget([ 
     'dataProvider'=> $dataProvider, 
     'filterModel' => $searchModel, 
     'columns' => $gridColumns, 
     'responsive'=> true, 
     'hover'=> true, 
     'pjax'=> true, 
     'pjaxSettings'=>[ 
      'neverTimeout'=>true, 
     ] 
    ]); 

コントローラ

public function actionIndex() 
    { 
    $searchModel = new reportDetailsSearch(); 
    $dataProvider = $searchModel->search(Yii::$app->request->queryParams); 

    return $this->render('index', [ 
     'searchModel' => $searchModel, 
     'dataProvider' => $dataProvider, 
    ]); 
    } 
    public function actionView($id) 
    { 
    $dataProvider = new ActiveDataProvider([ 
     'query' => reportDetails::find() 
       ->select('reference_no, report_id') 
       ->where(['report_id' => $id]), 
     'pagination' => [ 
      'pageSize' => 10, 
     ], 
    ]); 
    return $this->render('view', [ 
     'model' => $this->findModel($id), 
     'dataProvider' => $dataProvider, 
    ]); 
    } 

答えて

0

私はあなたがreport_idとして一意のキーを持っていると仮定しています。 すべてreference_numberには固有のreport_idがあります。 これは、グリッドにデータを入力して、ビューボタンのクエリ文字列としてreport_idを渡します。 そしてコントローラの動作からその値を取得します。例えば

:次に

 <?php 
$gridColumns = [ 
      ['class' => 'yii\grid\SerialColumn'], 
      'report_id', 
      'reference_no', 
      'subject', 
      'doc_date', 
      [ 
       'label' => 'For', 
       'value' => 'namefor.fullName', 
      ], 
      [ 
       'label' => 'From', 
       'value' => 'namefrom.fullName', 
      ], 
      'drawer_id', 
      'user_id', 
      'doc_name', 
      [ 
        'class' => 'yii\grid\ActionColumn', 
        'header' => 'Actions', 
        'contentOptions'=> [ 'style' => 'vertical-align: center;width:8%!important;'], 
        'template' => '{view}', 
        'buttons' => 
          [ 
           'view' => function ($url, $model, $key) 
            { 
             return Html::a('&nbsp;<span class="fa fa-download"></span>&nbsp;', ['report/download', 'id' => $model->reference_no],    
               [ 
                'title' => Yii::t('app', 'View'), 
                'class' => 'btn btn-primary btn-xs', 
                'data-method' => 'post', 

             ]); 
            }, 
          ],    
      ], 
      /*[ 
       'attribute' => '', 
       'format' => 'raw', 
       'value' => function($data) 
       { 
        return Html::a('', ['report/download', 'id' => $data->reference_no],['class' => 'fa fa-download']); 
       } 
      ], */ 
     ]; 
    echo GridView::widget([ 
     'dataProvider'=> $dataProvider, 
     'filterModel' => $searchModel, 
     'columns' => $gridColumns, 
     'responsive'=> true, 
     'hover'=> true, 
     'pjax'=> true, 
     'pjaxSettings'=>[ 
      'neverTimeout'=>true, 
     ] 
    ]); 
?> 

Contorller特に私は、このコードを配置する必要があり

<?php 
public function actionDownload($id) { 

     //var_dump($id); die; 

     //$emodel = Yourmodel::find()->where('id="' . $id . '"')->all(); 

     if (Yii::$app->request->post()) { 

       // var_dump(Yii::$app->request->post()); die; 

       var_dump($_POST); die; 
       // Do your stuff 

      } 

     } 
     return $this->render('download'); 
     ]); 
    } 
?> 
+0

であなたのactionDownload?私はyii2の新しいです。ありがとうございます。グリッドコード – Jaypee

+0

私はエラーを受け取りました。 不明なプロパティを設定する:yii \ grid \ DataColumn :: view –

+0

を書いたビューファイル内の – Jaypee

関連する問題