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:'序號',
align:'center'
},
{
title:'姓名', // 列標(biāo)題(支持開啟國際化)
field:'name', // 列字段名(注:屬性層級越深,渲染性能就越差,例如:aa.bb.cc.dd.ee)
align:'center', // 對齊方式
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-07
Vue項(xiàng)目如何實(shí)現(xiàn)rsa加密
這篇文章主要介紹了Vue項(xiàng)目如何實(shí)現(xiàn)rsa加密,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06
vue使用vue-video-player無法播放本地視頻的問題及解決
這篇文章主要介紹了vue使用vue-video-player無法播放本地視頻的問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08
詳解Vue源碼學(xué)習(xí)之callHook鉤子函數(shù)
這篇文章主要介紹了詳解Vue源碼學(xué)習(xí)之callHook鉤子函數(shù),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-07-07
vuejs2.0實(shí)現(xiàn)一個(gè)簡單的分頁示例
本篇文章主要介紹了vuejs2.0實(shí)現(xiàn)一個(gè)簡單的分頁示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-02-02
vue項(xiàng)目退出登錄清除store數(shù)據(jù)的三種方法
最近使用vue做用戶的登錄/退出,在開發(fā)過程中遇到的一些問題,記錄下來,下面這篇文章主要給大家介紹了關(guān)于vue項(xiàng)目退出登錄清除store數(shù)據(jù)的三種方法,需要的朋友可以參考下2022-09-09
vue-router報(bào)錯(cuò):uncaught error during route 
這篇文章主要介紹了vue-router報(bào)錯(cuò):uncaught error during route navigati問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06

