实现<el-table>表格内可编辑(单列)

el-table编辑单列

实现对el-table某一列数据可编辑

ElementPlus的<el-table>支持cell-click事件,点击某个单元格会触发改事件;

于是,思路如下

        第一点击单元格时变成可输入状态,离开单元格或者.enter时提交数据,变成不可输入状态;

        第二,el-input最好在点击没个单元格时,自动获取焦点;

代码如下

<el-table :data="formData.tableData" @cell-click="cellClick" border>
      <el-table-column label="ID" prop="id" align="center" header-align="center"/>
      <el-table-column label="姓名" prop="name" align="center" header-align="center">
        <template #default="{row, $index}">
          <el-input
            v-if="row.isEdit"
            v-model="row.name"
            @keydown.enter="inputNum(row)"
            @blur="blurInput(row)"
          />
          <span v-else>
            {{row.name}}
          </span>
        </template>
      </el-table-column>
      <el-table-column label="城市" prop="address" align="center" header-align="center"/>
      <el-table-column label="性别" prop="sex" align="center" header-align="center"/>
    </el-table>
const formData = ref({
  tableData :[
    {id: '1', name: '张张', address: '重庆', sex: '男', isEdit: false},
    {id: '2', name: '李李', address: '北京', sex: '女', isEdit: false},
    {id: '3', name: '王王', address: '上海', sex: '男', isEdit: false},
    {id: '4', name: '可可', address: '广州', sex: '女', isEdit: false},
  ]
})
function cellClick(row: any, column: any, cell, event: Event) {
  row = Object.assign(row, {isEdit: true})
  nextTick(() => {
    const input = cell.querySelector('.cell').querySelector('.el-input__inner')
    input.focus()
  })
}

function inputNum(row) {
  console.log(row)
  row = Object.assign(row, {isEdit: false})
}

function blurInput(row){
  row = Object.assign(row, {isEdit: false})
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值