<template>
  <div>
    <vxe-table
      ref="table"
      :data="tableData"
      :edit-config="{ showUpdateStatus: false }"
      @edit-closed="handleEditClosed"
    >
      <vxe-table-column type="selection" width="60" align="center"></vxe-table-column>
      <vxe-table-column field="name" title="姓名" width="120" align="center" editable></vxe-table-column>
      <vxe-table-column field="age" title="年龄" width="120" align="center" editable></vxe-table-column>
      <vxe-table-column field="address" title="地址" align="center" editable></vxe-table-column>
      <vxe-table-column field="operate" title="操作" width="80" align="center" fixed="right">
        <template #default="{ row }">
          <button @click="handleEdit(row)" class="btn">编辑</button>
        </template>
      </vxe-table-column>
    </vxe-table>
    <div class="btn-group">
      <button @click="handleSave" class="btn">保存</button>
      <button @click="handleCancel" class="btn">取消</button>
    </div>
  </div>
</template>
<script>
export default {
  data() {
    return {
      tableData: [
        { id: 1, name: '张三', age: 20, address: '北京' },
        { id: 2, name: '李四', age: 25, address: '上海' },
        { id: 3, name: '王五', age: 30, address: '广州' },
      ],
      editData: [],
      isEditing: false,
    };
  },
  methods: {
    handleEdit(row) {
      this.isEditing = true;
      this.editData.push(row);
    },
    handleEditClosed() {
      if (this.isEditing) {
        this.editData = [];
        this.isEditing = false;
      }
    },
    handleSave() {
      if (this.editData.length > 0) {
        this.$refs.table.saveRow(this.editData).then(() => {
          this.editData = [];
          this.isEditing = false;
        });
      }
    },
    handleCancel() {
      if (this.editData.length > 0) {
        this.$refs.table.cancelRow(this.editData).then(() => {
          this.editData = [];
          this.isEditing = false;
        });
      }
    },
  },
};
</script>
<style scoped>
.btn-group {
  margin-top: 20px;
  text-align: center;
}

.btn {
  padding: 6px 12px;
  font-size: 14px;
}
</style>
<p>该示例演示了如何使用 vxe-table 库实现多条数据编辑并统一保存功能。首先,我们创建了一个包含示例数据的表格,并配置了编辑模式,隐藏更新状态提示。然后,添加了一个“操作”列,包含一个“编辑”按钮,点击该按钮会将当前行添加到 editData 数组中。当点击“保存”按钮时,调用 saveRow 方法来保存编辑的数据,并清空 editData 数组和 isEditing 标识。当点击“取消”按钮时,调用 cancelRow 方法来取消编辑的数据,同样清空 editData 数组和 isEditing 标识。最后,我们使用 ref 属性引用 vxe-table 组件的实例,以便在方法中使用 this.$refs.table 调用组件的方法。</p>

原文地址: https://www.cveoy.top/t/topic/pQce 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录