如何使用 vxe-table 实现虚拟滚动Dom的查找替换功能,excel查找与替换功能

如何使用 vxe-table 实现虚拟滚动Dom的查找替换功能,excel查找与替换功能

https://vxetable.cn

通过 keyboard-config.isFNR 启用,支持 formatter 内容查找,需要注意如果不希望被随意替换成任意值时应该重写替换方法

areaFNR

查找规则是按照字段实际值进行匹配,如果需要按照自定义的值进行匹配,可以通过 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>

https://gitee.com/x-extends/vxe-table

posted @ 2025-11-25 10:59  可不简单  阅读(20)  评论(0)    收藏  举报