0
votes

I have a kartik\GridView in the view,

GridView

Actually, added a dropDownList on the toolbar

GridView with dropdownlist

But I need the dropDownList as a filter option for status [solicitudes_status], how can I achieve that?. Thank you.

$statusAll = TblEstatus::find()->all();
$statusArray = ArrayHelper::map($statusAll, 'estatus_id', 'estatus_descripcion');

$searchModel = new TblSolicitudesSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);


<?= GridView::widget([
    'dataProvider' => $dataProvider,
    'filterModel' => $searchModel,
    'columns' => [
      'solicitudes_solicitud',
      'solicitudes_dependencia_destino_id',
      'solicitudes_dependencia_tipoapoyo_id',
      'solicitudes_status',
      [
        'attribute' => 'solicitudes_status',
        'filter'    => [ 1=>"Nuevos", 2=>"Atendiendo", 3=>"Terminados" ]
      ],

      ['class' => 'yii\grid\ActionColumn'],
    ],
    'toolbar' =>  [
        ['content'=>
        Html::dropDownList('status_list_drop', 'null', $statusArray, ['data-pjax'=>0, 'class' => 'form-control']),
      ],
    ],
    'pjax' => true,
    'bordered' => true,
    'striped' => false,
    'condensed' => false,
    'responsive' => true,
    'hover' => true,
    'floatHeader' => false,
    'showPageSummary' => false, 
    'panel' => [
        'type' => GridView::TYPE_DEFAULT
    ],
]); ?>
1

1 Answers

0
votes

You can try to use activeDropDownList to perform filtering:

Html::activeDropDownList($searchModel, 'attribute_name',
    ArrayHelper::map(ModelName::find()->asArray()->all(), 'ID', 'Name'),
   ['class'=>'form-control','prompt' => 'Select status']),

Change values according to your attributes.