Yii GridView 列可编辑

GridView中的列有个contentOptions属性,添加此属性,如:

'name' => [
                'attribute' => 'name',
                'contentOptions' => function($model) {
                    return ['class' => 'input-editbale-item', 'data-attribute' => 'name', 'data-value' => $model->name, 'data-url' => Url::to('product/edit-column?id=' . $model->id)];
                },
            ],

使用ajax提交数据,当双击列时显示输入框,但敲下enter键时提交

// input 类型
    $('.grid-view table .input-editbale-item').each(function() {
        $(this).dblclick(function() {
            var dataValue = $(this).attr('data-value');
            var inputBox = document.createElement('input');
            inputBox.name = "item";
            inputBox.className = 'item-edit';
            inputBox.value = dataValue;
            $(this).html(inputBox)
        })
    })
    $('.grid-view table .input-editbale-item').on('keydown', '.item-edit', function(e) {
        if (e.keyCode == 13) {
            var parent = $(this).parent();
            var value = $(this).val();
            var oldValue = parent.attr('data-value');
            var postUrl = parent.attr('data-url');
            var attr = parent.attr('data-attribute');
            postUrl = baseBackend + '/' + postUrl;
            $.ajax({
                type: "POST",
                url: postUrl,
                dataType: 'json',
                data: "_csrf-backend=" + $('meta[name=csrf-token]') + '&value=' + value + '&old_value=' + oldValue + '&attr=' + attr,
                success: function(msg){
                    if(msg.error == 0) {
                       //window.location.reload();
                    } else {
                        alert(msg.msg);
                    }
                }
            });
            $(this).parent().html(value);
            
        }
    })

 

后台修改数据

public function actionEditColumn($id) {
        $value = Yii::$app->request->post('value', '');
        $oldValue = Yii::$app->request->post('old_value', '');
        $attr = Yii::$app->request->post('attr', '');
        if(empty($value) || empty($attr)) {
            $data = [
                'error' => 1,
                'msg' => Yii::t('backend', 'params_error')
            ];
            return json_encode($data);
        }
  
        if($value != $oldValue) {
            $model = $this->findModel($id);
            $model->$attr = $value;
            $model->save();
            $data = [
                'error' => 0,
                'msg' => Yii::t('backend', 'update_success')
            ];
            return json_encode($data);
        }
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值