Filtering a gridview by ajax from other gridview

Hi all,

How to make a conditional search on a pjax gridview by an ajax function call?

I start to develop Yii2 application recently. I made two searchable gridviews by Krajee’s extension in the same view and want to filter the second gridview by selecting a key from the first gridview.

My code is pasted as below.

Two tables in database:

member_family




public function attributeLabels()

    {

        return [

            'id' => 'ID',

            'householder_id' => 'Householder ID',

        ];

    }



member_detail




    public function attributeLabels()

    {

        return [

            'id' => 'ID',

            'family_id' => 'Family ID',

            'name' => 'Name',

        ];

    }



/views/memberdetail/index.php (I put these two gridviews in this page.)




    // family table

    Pjax::begin(); echo GridView::widget([

        'dataProvider' => $dataProviderFamily,

        'filterModel' => $searchModelFamily,

        'columns' => [

            ['class' => 'yii\grid\SerialColumn'],

            'id',

            'householder_id',

            [

                'attribute' => 'Show all members',

                'format' => 'raw',

                'value' => function ($model) {

                    return '<a href="index.php?MemberDetailSearch%5Bid%5D=&MemberDetailSearch%5Bfamily_id%5D='.$model->id.'&MemberDetailSearch%5Bname%5D=" class="showdetail" myid="'.$model->id.'">Show detail</a>';

                },

            ],


            [

                'class' => 'yii\grid\ActionColumn',

                'buttons' => [

                    'update' => function ($url, $model) {

                        return Html::a('<span class="glyphicon glyphicon-pencil"></span>', Yii::$app->urlManager->createUrl(['memberfamily/view','id' => $model->id,'edit'=>'t']), [

                            'title' => Yii::t('yii', 'Edit'),

                        ]);}


                ],

            ],

        ],

        'responsive'=>true,

        'hover'=>true,

        'condensed'=>true,

        'floatHeader'=>true,


        'panel' => [

            'heading'=>'<h3 class="panel-title"><i class="glyphicon glyphicon-th-list"></i> Family list </h3>',

            'type'=>'info',

            'before'=>Html::a('<i class="glyphicon glyphicon-plus"></i> Add', ['create'], ['class' => 'btn btn-success']),                                                                                                                                                          'after'=>Html::a('<i class="glyphicon glyphicon-repeat"></i> Reset List', ['index'], ['class' => 'btn btn-info']),

            'showFooter'=>false

        ],

    ]); Pjax::end(); ?>




    <?php

// family member detail


    Pjax::begin(); echo GridView::widget([

        'id' => 'mytest',

        'dataProvider' => $dataProvider,

        'filterModel' => $searchModel,

        'columns' => [

            ['class' => 'yii\grid\SerialColumn'],

            'id',

            'family_id',

            'name',

            [

                'class' => 'yii\grid\ActionColumn',

                'buttons' => [

                'update' => function ($url, $model) {

                                    return Html::a('<span class="glyphicon glyphicon-pencil"></span>', Yii::$app->urlManager->createUrl(['memberdetail/view','id' => $model->id,'edit'=>'t']), [

                                                    'title' => Yii::t('yii', 'Edit'),

                                                  ]);}


                ],

            ],

        ],

        'responsive'=>true,

        'hover'=>true,

        'condensed'=>true,

        'floatHeader'=>true,

        'panel' => [

            'heading'=>'<h3 class="panel-title"><i class="glyphicon glyphicon-th-list"></i> '.Html::encode($this->title).' </h3>',

            'type'=>'info',

            'before'=>Html::a('<i class="glyphicon glyphicon-plus"></i> Add', ['create'], ['class' => 'btn btn-success']),                                                                                                                                                          'after'=>Html::a('<i class="glyphicon glyphicon-repeat"></i> Reset List', ['index'], ['class' => 'btn btn-info']),

            'showFooter'=>false

        ],

    ]); Pjax::end();

     ?>




/controllers/MemberDetailController.php




    public function actionIndex()

    {


        $searchModel = new MemberDetailSearch;

        $dataProvider = $searchModel->search(Yii::$app->request->getQueryParams());


        $searchModelFamily = new MemberFamilySearch;

        $dataProviderFamily = $searchModelFamily->search(Yii::$app->request->getQueryParams());


        if(!isset($_GET['ajax']))

            return $this->render('index',  [

                'dataProvider' => $dataProvider,

                'searchModel' => $searchModel,

                'dataProviderFamily' => $dataProviderFamily,

                'searchModelFamily' => $searchModelFamily,

            ]);

        else

            return $this->renderPartial('index',  [

                'dataProvider' => $dataProvider,

                'searchModel' => $searchModel,

                'dataProviderFamily' => $dataProviderFamily,

                'searchModelFamily' => $searchModelFamily,

            ]);

    }




Did I miss anything to do? I stuck on this issue many days, thanks!!