【问题标题】:Yii2 Custom filter Dropdown for gridviewYii2 用于 gridview 的自定义过滤器下拉列表
【发布时间】:2017-03-24 10:18:56
【问题描述】:

我正在尝试在网格视图标题中添加一个名为 Sort By Month 的自定义过滤器,这是我正在改造的网站先前版本的示例,请参见下图

我正在查看网格视图的 layout 选项,并在 {items} 之前的布局模板中添加了一个下拉列表

GridView::widget(
        [
            'dataProvider' => $dataProvider,
            'filterModel' => $searchModel,
            'layout' => '{summary}{errors}' . \kartik\widgets\Select2::widget(
                [
                    'model' => $searchModel,
                    'attribute' => 'filter_month',
                    'theme' => \kartik\widgets\Select2::THEME_DEFAULT,
                    'data' => $searchModel->getFilterMonths(),
                    'pluginEvents' => [
                        "select2:select" => 'function() { $("#w2").submit();}',
                        //  'select2:select'=> new \yii\web\JsExpression("function(){console.log('here')}"),
                    ],
                    'options' => [
                        'placeholder' => '--Select Month--',
                    ],
                    'pluginOptions' => [
                        'allowClear' => true,
                        'width' => '160px',
                    ],
                ]
            ) . '{items}{pager}',
            'columns' => [
                ['class' => 'yii\grid\SerialColumn'],
                'name',
                'title',
                'catalog',
                'upc_code',
                [
                    'attribute' => 'created_on',
                    'label' => 'Created On',
                    'filter' => \yii\jui\DatePicker::widget(['dateFormat' => 'yyyy-MM-dd', 'model' => $searchModel, 'attribute' => 'created_on']),
                    'format' => 'html',
                ],
                [
                    'attribute' => 'status',
                    'label' => 'Status',
                    'format' => 'raw',
                    'value' => function ($data) {
                        switch ($data->status) {
                            case 0:
                                return "Being Edited    (" . $data->created_on . ")";
                                break;
                            case 1:
                                return ($data->maxdate == '') ? 'Active' : 'Active';
                                break;
                            case 2:
                                return "Expired";
                                break;
                        }
                    },
                ],
                ['class' => 'yii\grid\ActionColumn'],
            ],
        ]
);

现在我想在从下拉列表中选择一个选项时提交过滤器表单,但无法弄清楚如何使用下拉选项附加默认过滤器提交事件,以便在我选择时过滤结果下拉菜单中的任何选项。

【问题讨论】:

  • 请使用 t "filterSelector" => "#"。 Html::getInputId($searchModel, 'AttributeName'),

标签: yii2 yii2-advanced-app


【解决方案1】:

对于自定义过滤器,您使用了完美的布局,但您必须将自定义字段提供为 filterSelector

"filterSelector" => "#". Html::getInputId($searchModel, 'AttributeName'),

【讨论】:

  • 谢谢@ieatbytes,你是对的,它开始像魅力一样工作。
猜你喜欢
  • 2020-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-04
  • 2020-12-22
相关资源
最近更新 更多