Yii gridview如何根据数据设置可编辑选项

y4ekin9u  于 2022-11-09  发布在  其他
关注(0)|答案(2)|浏览(151)

这是我的网格视图代码

<?= GridView::widget([
    'dataProvider' => $dataProvider,
    'filterModel' => $searchModel,
    'toolbar'=> [
        ['content'=>
            Html::a('<i class="glyphicon glyphicon-plus"></i> Add New', ['create'],['class'=>'btn btn-shadow btn-success'])
        ],
        '{toggleData}',
    ],
    'columns' => [
        ['class' => 'kartik\grid\SerialColumn'],
        [
            'attribute'=>'Name',
            'vAlign'=>GridView::ALIGN_MIDDLE,
        ],
        [
            'attribute'=>'Age',
            'vAlign'=>GridView::ALIGN_MIDDLE,
            'value'=>'Age',
            'width'=>'5%',
            'hAlign'=>'center',
        ],
        [
            'attribute'=>'Address',
            'vAlign'=>GridView::ALIGN_MIDDLE,
        ],
        [
            'class' => 'kartik\grid\EditableColumn',
            'attribute'=>'Status',
            'vAlign'=>GridView::ALIGN_MIDDLE,
            'hAlign'=>GridView::ALIGN_CENTER,
            'width'=>'15%',
            'filterType'=>GridView::FILTER_SELECT2,
            'filterWidgetOptions'=>[
                'options' => ['placeholder' => 'Search Status...'],
                'pluginOptions' => [
                    'allowClear' => true
                ],
            ],
            'value'=>function($model){
                return ($model->Status=='0'?'Pending':($model->Status=='1'?'Accepted':'Rejected'));},
            'filter'=>['Pending','Diterima'],
            'label' => 'Status',
            'refreshGrid'=>true,
            'editableOptions'=>[
                'format' => Editable::FORMAT_BUTTON,
                'asPopover' => true,
                'inputType' => Editable::INPUT_DROPDOWN_LIST,
                'data'=>['0'=>'Pending', '1'=>'Accepted', '2'=>'Rejected'],
                'options' => ['class'=>'form-control'],
            ]
        ],
        [
            'class' => 'kartik\grid\ActionColumn',
            'template' => '
                <li>{view}</li>
                <li>{update}</li>
                <li>{delete}</li>',
            'dropdown'=>true,
            'dropdownOptions'=>['class'=>'pull-right'],
            'headerOptions'=>['class'=>'kartik-sheet-style'],
        ],
    ],
    'panel'=>[
        'type'=>GridView::TYPE_DEFAULT,
    ]
]); ?>

请帮助我使用Status属性。此网格视图的结果如下所示:

我想要的是这样的:

所以,这就像当状态是待定时,editableOption是打开的。但是当状态是接受或拒绝时,editableOption是禁用的。这可能吗?

pkbketx9

pkbketx91#

您需要更改状态属性值选项
状态属性的值选项中的更改。

[
        'class' => 'kartik\grid\EditableColumn',
        'attribute'=>'Status',
          // ------- your code ------------
        'format'=>'raw',
        'value'=>function($model){
              if($model->Status=='0')
              {
                // if status =0 than create button and append with string
                $btn='<button type="button" id='.$model->id.' class="btn btn-default ><i class="fa fa-pencil-square-o"></i></button>';
                return 'Pending'.$btn;
              }
              else
              {
                return($model->Status=='1'?'Accepted':'Rejected');
              }
            },
        // ------- your code ------------

    ],
zy1mlcev

zy1mlcev2#

有多种方法可以完成您所要求的操作,如果您使用了editableOptions,则
1.对于可编辑的::INPUT_DROPDOWN_LIST类型-〉使用'可编辑按钮选项' =〉[ '已禁用' =〉$数据-〉您的状态变量条件],
1.对于任何其他类型,添加readonly属性
函数($data){返回$data-〉您的状态变量条件;},
我希望它能帮助那些正在寻找同样问题的人

相关问题