vxe-grid可编辑渲染

vxe-grid可编辑渲染

自定义单元格渲染后,需求在自定义的单元格能够编辑单元格的数据,这个时候需要用到edit-render,可编辑渲染,通过点击单元格显示编辑项,修改单元格数据

在这里插入图片描述
代码

<template>
  <div style="height: 400px">
    <vxe-grid ref="xGrid" v-bind="gridOptions"></vxe-grid>
  </div>
</template>
<script>
export default {
  data () {
    return {
      gridOptions: {
        highlightHoverRow: true,
        autoResize: true,
        height: 'auto',
        border: true,
        loading: false,
        editConfig: {
          trigger: 'dblclick', // 双击显示
          mode: 'cell',
          showStatus: true,
          showIcon: false,
          activeMethod: this.activeCellMethod
        },
        mouseConfig: {
          selected: true,
          area: true,
          extension: true
        },
        columns: [
          { type: 'seq' },
          { field: 'name', title: 'Name', cellRender: { name: 'MyLink' } },
          { field: 'role', title: 'Role', editRender: { name: 'RoleCell', events: { click: this.getCellData } } },
          { field: 'sex', title: 'Sex' }
        ],
        data: []
      }
    }
  },
  mounted () {
    this.getData().then((data) => {
      this.gridOptions.data = data
    })
  },
  methods: {
    activeCellMethod () {
      return true
    },
    getCellData (params) {
      console.log(params)
    },
    getData () {
      return new Promise((resolve) => {
        const list = [
          { name: 'Test1', role: '前端', sex: '男' },
          { name: 'Test2', role: '后端', sex: '男' },
          { name: 'Test3', role: '测试', sex: '男' },
          { name: 'Test4', role: '设计师', sex: '女' },
          { name: 'Test5', role: '前端', sex: '男' },
          { name: 'Test6', role: '前端', sex: '男' },
          { name: 'Test7', role: '前端', sex: '男' }
        ]
        resolve(list)
      })
    }
  }
}
</script>

// 修改table.js的编辑组件
VXETable.renderer.add('RoleCell', {
  autofocus: '.vxe-input--inner',
  // 双击单元格后显示输入框
  renderEdit (h, renderOpts, params) {
    // const { data } = params
    const { row, column } = params
    const { events } = renderOpts
    // console.log(params)
    return [
      <el-input size='small' text='text' v-model={ row[column.property] } onblur={ () => events.click(params) } />
    ]
  },
  // 默认显示模板
  renderCell (h, cellRender, params) {
    // eslint-disable-next-line no-unused-vars
    const { row, column } = params
    // console.log(row, column)
    return [
      <span>{ row[column.property] } </span>
      // <progress value= '70' max= '100' ></progress>
    ]
  }
})

双击单元格显示输入框,输入数据后,可将数据显示
在这里插入图片描述
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值