el-table 点击切换input修改单元格

博客围绕Vue相关技术展开,提及表格渲染,介绍了中转参数orderId,可绑定scope值,一次修改一行。还强调input聚焦要对应表格中元素。

1.表格渲染 

<el-table-column align="center" prop="sysOrderId" label="订单编号" min-width="220" show-overflow-tooltip>
            <template slot-scope="scope">
              <div v-if="!scope.row.sysOrderId">
                <el-input :id="'sysOrderInput_' + scope.$index" v-model='orderId' style='width: 90%' v-if="scope.row.orderFlag" @blur="updateOrderId(scope.row, scope.$index)"></el-input>
                <el-button type="text" class="el-icon-edit-outline" @click="handleOrderEdit(scope.row, scope.$index)"></el-button>
              </div>
              <span v-else>{{scope.row.sysOrderId}}</span>
            </template>
 </el-table-column>

2.方法

orderId ---中转参数,也可以绑定scope值,但一次只修改一行,重新定义也无妨

handleOrderEdit(item, index) {
      item.orderFlag = true
      this.$nextTick(() => {
        document.getElementById(`sysOrderInput_${index}`).focus()
      })
    },
updateOrderId(item) {
      this.$service.axios({
        sysRefundId: item.sysRefundId,
        orderId: this.orderId
      }).then(res => {
        if (res.errorCode === '0') {
          this.$message.success('操作成功')
          this.getList()
        }
      }).catch(() => {
        this.orderId = ''
        this.getList(this.pageNum)----请求
 })

3,input聚焦需对应表格中元素!!!

### 在 el-table-v2 中实现可编辑单元格的功能 `el-table-v2` 是 Element Plus 提供的虚拟化表格组件,适用于大数据量场景。与传统的 `el-table` 不同,`el-table-v2` 的设计更加注重性能优化,但其使用方式也有所不同。以下是通过 `el-input` 实现可编辑单元格功能的详细说明和示例代码。 #### 1. 数据结构准备 在实现可编辑单元格之前,需要定义一个数据结构来存储表格中的每一行数据。例如: ```javascript data() { return { tableData: [ { id: 1, name: '张三', age: 25 }, { id: 2, name: '李四', age: 30 }, { id: 3, name: '王五', age: 35 } ], columns: [ { key: 'name', title: '姓名', width: 150 }, { key: 'age', title: '年龄', width: 150 } ] }; } ``` 上述代码中,`tableData` 存储了表格的数据,而 `columns` 定义了表格的列配置。注意,`columns` 中的 `width` 属性必须为数字类型[^2]。 #### 2. 表格渲染逻辑 `el-table-v2` 的核心是通过 `columns` 和 `data` 属性来渲染表格内容。以下是一个基础的表格渲染示例: ```vue <template> <el-table-v2 :columns="columns" :data="tableData" :width="400" :height="300" /> </template> ``` #### 3. 实现可编辑单元格 为了实现单元格的可编辑功能,可以通过自定义列渲染器来嵌入 `el-input` 组件。以下是完整的实现代码: ```vue <template> <el-table-v2 :columns="columns" :data="tableData" :width="400" :height="300" /> </template> <script> export default { data() { return { tableData: [ { id: 1, name: '张三', age: 25 }, { id: 2, name: '李四', age: 30 }, { id: 3, name: '王五', age: 35 } ], columns: [ { key: 'name', title: '姓名', width: 150, cellRenderer: ({ rowData, columnIndex }) => { return h('el-input', { modelValue: rowData.name, onInput: (value) => (rowData.name = value) }); } }, { key: 'age', title: '年龄', width: 150, cellRenderer: ({ rowData, columnIndex }) => { return h('el-input', { modelValue: rowData.age, onInput: (value) => (rowData.age = value) }); } } ] }; } }; </script> ``` #### 4. 注意事项 - **宽度设置**:`el-table-v2` 的列宽必须明确指定为数字类型,否则可能导致表格渲染异常[^2]。 - **性能问题**:虽然 `el-table-v2` 适用于大数据量场景,但在生产环境中仍需测试其流畅性。如果发现卡顿问题,可以考虑使用更成熟的第三方组件(如 `vxe-table`)。 - **事件绑定**:在 `cellRenderer` 中使用 `onInput` 等事件时,确保正确更新数据以保持响应式效果。 #### 示例解析 上述代码中,`cellRenderer` 方法用于定义每列单元格的渲染逻辑。通过 `h` 函数创建 `el-input` 组件,并将其绑定到对应的数据字段上。当用户输入时,`onInput` 事件会实时更新 `rowData` 的值。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值