vxe-table如何使用vxe-grid實(shí)現(xiàn)動(dòng)態(tài)配置表格
一、圖1:界面效果
說明:
- 1)刪除:觸發(fā)函數(shù)
deleteRow
刪除當(dāng)前行。 - 2)編輯:觸發(fā)函數(shù)
editRow
將當(dāng)前行激活,界面發(fā)生變化。見圖2。
二、圖2:編輯效果
說明:
- 3)保存:觸發(fā)函數(shù)
saveRow
保存當(dāng)前行數(shù)據(jù)。 - 4)取消:觸發(fā)函數(shù)
cancelRow
還原當(dāng)前行數(shù)據(jù)。
三、表格配置
// 表格配置 export const colConfig = [ { type:'seq', // 列的類型:seq、checkbox、radio、expand title:'序號(hào)', align:'center' }, { title:'姓名', // 列標(biāo)題(支持開啟國際化) field:'name', // 列字段名(注:屬性層級(jí)越深,渲染性能就越差,例如:aa.bb.cc.dd.ee) align:'center', // 對(duì)齊方式 editRender:{ // 可編輯渲染器配置項(xiàng) name:'input' // 渲染器名稱:input, textarea, select, $input, $select, $switch } }, { title:'年齡', field:'age', align:'center', editRender:{ name:'input' } }, { title:'性別', field:'sex', align:'center', editRender:{ name:'input' } } ] // 表格數(shù)據(jù) export const tableData = [ { name:'小紅', age:15, sex:'女', id:1 }, { name:'小白', age:25, sex:'男', id:2 }, { name:'小藍(lán)', age:21, sex:'女', id:3 } ]
四、代碼實(shí)現(xiàn)
<template> <div style="padding:100px"> <vxe-grid ref="xTable" :max-height="450" v-bind="gridOptions" show-overflow keep-source highlight-hover-row highlight-current-row resizable auto-resize :row-config="{ isCurrent: true, isHover: true,keyField:'id' }" :edit-config="{trigger: 'manual', mode: 'row'}" > > <template #operation="{ row }"> <vxe-button type="text" status="primary" @click="deleteRow(row)">刪除</vxe-button> <span v-if="$refs.xTable.isActiveByRow(row)"> <vxe-button type="text" status="primary" @click="saveRow()">保存</vxe-button> <vxe-button type="text" status="primary" @click="cancelRow(row)">取消</vxe-button> </span> <span v-else> <vxe-button type="text" status="primary" @click="editRow(row)">編輯</vxe-button> </span> </template> </vxe-grid> </div> </template> <script> import { colConfig, tableData } from './colConfig' export default { data() { return { gridOptions: { columns: [], data: [], }, } }, created() { this.getTableData() }, methods: { getTableData() { // 1.設(shè)置表格列 this.gridOptions.columns = colConfig // 2.設(shè)置表格數(shù)據(jù) this.gridOptions.data = tableData // 3.添加操作列 let operationCol = { title: '操作', slots: { default: 'operation' }, align: 'center' } this.gridOptions.columns.push(operationCol) }, deleteRow(row) { let index = this.gridOptions.data.findIndex(item => item.id === row.id) this.gridOptions.data.splice(index, 1) }, editRow(row) { const $table = this.$refs.xTable $table.setActiveRow(row) }, saveRow() { const $table = this.$refs.xTable $table.clearActived().then(() => { this.loading = true setTimeout(() => { this.loading = false }, 300) }) }, cancelRow(row) { const $table = this.$refs.xTable $table.clearActived().then(() => { // 還原行數(shù)據(jù) $table.revertData(row) }) } } } </script>
官方文檔:vxe-table API
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
基于前端VUE+ElementUI實(shí)現(xiàn)table行上移或下移功能(支持跨頁移動(dòng))
有時(shí)候需要前端實(shí)現(xiàn)上移和下移功能,下面這篇文章主要給大家介紹了關(guān)于如何基于前端VUE+ElementUI實(shí)現(xiàn)table行上移或下移(支持跨頁移動(dòng))的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-07-07Vue項(xiàng)目如何實(shí)現(xiàn)rsa加密
這篇文章主要介紹了Vue項(xiàng)目如何實(shí)現(xiàn)rsa加密,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06vue使用vue-video-player無法播放本地視頻的問題及解決
這篇文章主要介紹了vue使用vue-video-player無法播放本地視頻的問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08詳解Vue源碼學(xué)習(xí)之callHook鉤子函數(shù)
這篇文章主要介紹了詳解Vue源碼學(xué)習(xí)之callHook鉤子函數(shù),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-07-07vuejs2.0實(shí)現(xiàn)一個(gè)簡(jiǎn)單的分頁示例
本篇文章主要介紹了vuejs2.0實(shí)現(xiàn)一個(gè)簡(jiǎn)單的分頁示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-02-02vue項(xiàng)目退出登錄清除store數(shù)據(jù)的三種方法
最近使用vue做用戶的登錄/退出,在開發(fā)過程中遇到的一些問題,記錄下來,下面這篇文章主要給大家介紹了關(guān)于vue項(xiàng)目退出登錄清除store數(shù)據(jù)的三種方法,需要的朋友可以參考下2022-09-09vue-router報(bào)錯(cuò):uncaught error during route 
這篇文章主要介紹了vue-router報(bào)錯(cuò):uncaught error during route navigati問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06