如何使用 vxe-table 实现虚拟滚动Dom的查找替换功能,excel查找与替换功能
如何使用 vxe-table 实现虚拟滚动Dom的查找替换功能,excel查找与替换功能
通过 keyboard-config.isFNR 启用,支持 formatter 内容查找,需要注意如果不希望被随意替换成任意值时应该重写替换方法

查找规则是按照字段实际值进行匹配,如果需要按照自定义的值进行匹配,可以通过 fnr-config.findMethod 自定义方法
<template>
<div>
<vxe-grid v-bind="gridOptions"></vxe-grid>
</div>
</template>
<script setup>
import { reactive } from 'vue'
const sexList = [
{ label: '女', value: '0' },
{ label: '男', value: '1' }
]
const gridOptions = reactive({
border: true,
height: 500,
showOverflow: true,
columnConfig: {
resizable: true
},
mouseConfig: {
area: true // 是否开启区域选取
},
areaConfig: {
multiple: false, // 是否启用多区域选取功能
showColumnStatus: true, // 选择单元格后显示列状态
showRowStatus: true, // 选择单元格后显示行状态
selectCellToRow: true // 选择单元格自动选中行
},
keyboardConfig: {
isClip: true, // 是否开启复制粘贴
isArrow: true, // 是否开启方向键功能
isShift: true, // 是否开启同时按住方向键以活动区域为起始,向指定方向扩展单元格区域
isTab: true, // 是否开启 Tab 键功能
isEnter: true, // 是否开启回车键功能
isFNR: true // 是否开启查找与替换
},
fnrConfig: {
replaceMethod ({ replaceValue, row, column }) {
// 自定义替换值的逻辑
if (column.field === 'sex') {
const sexValue = replaceValue ? (replaceValue === '男' ? '1' : '0') : ''
row[column.field] = sexValue
}
}
},
columns: [
{ type: 'seq', width: 60 },
{ field: 'name', title: 'name' },
{ field: 'role', title: 'Role' },
{
field: 'sex',
title: 'sex',
formatter ({ cellValue }) {
const item = sexList.find(item => item.value === cellValue)
return item ? item.label : cellValue
}
},
{ field: 'num', title: 'Num' },
{ field: 'age', title: 'age' },
{ field: 'address', title: 'Address', width: 300 }
],
data: [
{ id: 10001, name: 'Test1', role: 'Develop', sex: '1', num: 23, age: 28, address: 'Shengzhen' },
{ id: 10002, name: 'Test2', role: 'Test', sex: '0', num: 23, age: 22, address: 'Guangzhou' },
{ id: 10003, name: 'Test3', role: 'PM', sex: '1', num: 23, age: 32, address: 'Shanghai' },
{ id: 10004, name: 'Test4', role: 'Designer', sex: '0', num: 456, age: 24, address: 'Shanghai' },
{ id: 10005, name: 'Test5', role: 'Designer', sex: '0', num: 23, age: 42, address: 'Guangzhou' },
{ id: 10006, name: 'Test6', role: 'Designer', sex: '1', num: 23, age: 38, address: 'Shengzhen' },
{ id: 10007, name: 'Test7', role: 'Test', sex: '0', num: 100, age: 24, address: 'Shengzhen' },
{ id: 10008, name: 'Test8', role: 'PM', sex: '1', num: 345, age: 34, address: 'Shanghai' },
{ id: 10009, name: 'Test9', role: 'Designer', sex: '1', num: 67, age: 52, address: 'Shanghai' },
{ id: 10010, name: 'Test10', role: 'Test', sex: '0', num: 23, age: 44, address: 'Guangzhou' },
{ id: 10011, name: 'Test11', role: 'Designer', sex: '1', num: 56, age: 52, address: 'Shanghai' },
{ id: 10012, name: 'Test12', role: 'Test', sex: '0', num: 23, age: 16, address: 'Guangzhou' }
]
})
</script>

浙公网安备 33010602011771号