小工具知识网

当前位置: 首页 > 行业知识 > 前端element-plus表格分页

行业知识

前端element-plus表格分页

2026-11-15 07:14:31 来源:互联网转载

element-plus 前端表格分页

实现思路:

1.定义三个变量

        tableData:存储所有表格数据

        transferData:存储筛选操作之后的数据

        tableShowData:存储当前页需要展示的数据

2.获取每页数据(transferData=>tableShowData)

for (    let i = (currentPage4.value - 1) * pageSize4.value;    i  
const tableShowData = computed({  get() {    return transferData.value.slice(      (currentPage4.value - 1) * pageSize4.value,      currentPage4.value * ppageSize4.value    );  },  set(value) {},});

3.添加表格可能用到的筛选,排序,多选等功能。

        1.筛选:添加@filter-change="handleFilterChange"方法。

        handleFilterChange(filter);

const fliterHandLerData: any = ref([]);//保存筛选后的数据  let emitObj: any = {};//保存筛选条件  emitObj = _.cloneDeep(filter);//获取筛选条件(filter函数参数)  if (emitObj[Object.keys(emitObj)[0]].length > 0) {//判断是否需要进行筛选    for (let item in emitObj) {//循环筛选条件      tableData.value.forEach((oitem) => {//循环原始数据每条数据        if (emitObj[item].includes(oitem[item])) {//判断指定字段这时候符合条件          fliterHandLerData.value.push(oitem);//附和则保存该条数据        }      });    }    transferData.value = fliterHandLerData.value;//将所有符合条件的数据存放到筛选后的变量中  } else {//没有筛选或者点击重置的时候直接赋值筛选变量所有数据    transferData.value = tableData.value;  }

        2.排序 @sort-change="sortChange"   

        sortChange = ({ column, prop, order }) =>{}

if (order == "ascending") {    //升序    transferData.value.sort((a: any, b: any) => {      return a[prop] - b[prop];    });  } else if (order == "descending") {    //降序    transferData.value.sort((a: any, b: any) => {      return b[prop] - a[prop];    });  }

        3.全选通过toggleRowSelection,toggleAllSelection,clearSelection完成全选,清楚全选,选中某条数据操作。

4.完整代码示例

                        import { ref } from "vue";// 保存所有数据const tableData = [  {    date: "1",    name: "Tom",    address: "2021-10-12",  },  {    date: "2",    name: "Tom",    address: "2021-10-15",  },  {    date: "4",    name: "Tom",    address: "2021-10-14",  },  {    date: "3",    name: "Tom",    address: "2021-10-10",  },  {    date: "5",    name: "Tom",    address: "2021-10-1",  },  {    date: "9",    name: "cad",    address: "2021-10-1",  },  {    date: "7",    name: "Tom",    address: "2021-10-1",  },  {    date: "6",    name: "Tom",    address: "2021-10-1",  },  {    date: "10",    name: "Tom",    address: "2021-10-1",  },  {    date: "8",    name: "Tom",    address: "2021-10-1",  },  {    date: "14",    name: "cad",    address: "2021-10-1",  },  {    date: "11",    name: "Tom",    address: "2021-10-1",  },  {    date: "15",    name: "Tom",    address: "2021-10-1",  },  {    date: "12",    name: "Tom",    address: "2021-10-1",  },  {    date: "17",    name: "Tom",    address: "2021-10-1",  },  {    date: "21",    name: "Tom",    address: "2021-10-1",  },  {    date: "16",    name: "cad",    address: "2021-10-1",  },  {    date: "13",    name: "Tom",    address: "2021-10-1",  },  {    date: "20",    name: "cad",    address: "2021-10-1",  },  {    date: "19",    name: "Tom",    address: "2021-10-1",  },  {    date: "18",    name: "Tom",    address: "2021-11-12",  },  {    date: "24",    name: "Tom",    address: "2021-11-12",  },  {    date: "23",    name: "cad",    address: "2021-11-12",  },  {    date: "22",    name: "cad",    address: "2021-11-12",  },  {    date: "28",    name: "cad",    address: "2021-11-12",  },  {    date: "27",    name: "Tom",    address: "2021-11-12",  },  {    date: "26",    name: "cad",    address: "2021-11-12",  },  {    date: "25",    name: "cad",    address: "2021-11-12",  },  {    date: "32",    name: "Tom",    address: "2021-11-12",  },  {    date: "31",    name: "kmi",    address: "2021-11-12",  },  {    date: "30",    name: "Tom",    address: "2021-11-12",  },  {    date: "34",    name: "kmi",    address: "2021-11-12",  },  {    date: "33",    name: "kmi",    address: "2021-11-12",  },  {    date: "29",    name: "Tom",    address: "2021-11-12",  },  {    date: "35",    name: "Tom",    address: "2021-11-12",  },  {    date: "36",    name: "kmi",    address: "2021-11-12",  },  {    date: "37",    name: "Tom",    address: "2021-11-12",  },  {    date: "38",    name: "Tom",    address: "2021-11-12",  },  {    date: "39",    name: "kmi",    address: "2021-11-12",  },  {    date: "40",    name: "Tom",    address: "2021-11-12",  },  {    date: "41",    name: "Bob",    address: "2021-11-12",  },  {    date: "42",    name: "Tom",    address: "2021-11-12",  },  {    date: "43",    name: "Tom",    address: "2021-11-12",  },  {    date: "44",    name: "Tom",    address: "2021-11-12",  },  {    date: "45",    name: "Tom",    address: "2021-11-12",  },  {    date: "46",    name: "Bob",    address: "2021-11-12",  },  {    date: "47",    name: "Tom",    address: "2021-11-12",  },  {    date: "48",    name: "Tom",    address: "2021-11-12",  },  {    date: "49",    name: "Bob",    address: "2021-11-12",  },  {    date: "50",    name: "Tom",    address: "2021-11-12",  },  {    date: "51",    name: "Bob",    address: "2021-11-12",  },  {    date: "52",    name: "Tom",    address: "2021-11-12",  },];// 保存中间处理后的数据const transferData: any = ref([]);// 保存需要展示的单页数据const tableShowData: any = ref([]);const currentPage4 = ref(1); //页数const pageSize4 = ref(5); //每页数据条数const small = ref(false);const background = ref(false);const disabled = ref(false);const search = ref(null);const total = ref(tableData.length);const handleSizeChange = (val: number) => {  getData();};const getData = () => {  tableShowData.value = [];  for (    let i = (currentPage4.value - 1) * pageSize4.value;    i  {  getData();  if (order == "ascending") {    //升序    tableShowData.value.sort((a: any, b: any) => {      return a[prop] - b[prop];    });  } else if (order == "descending") {    //降序    tableShowData.value.sort((a: any, b: any) => {      return b[prop] - a[prop];    });  }};const inputBlur = () => {  transferData.value = [];  if (!search.value) {    transferData.value = tableData;    total.value = transferData.value.length;    return;  }  tableData.forEach((item) => {    if (item.name == search.value) {      transferData.value.push(item);    }  });  total.value = transferData.value.length;  getData();};const handleCurrentChange = (val: number) => {  getData();};const handleSelectionChange = (val: any) => {  console.log("多选val", val);};const filters = ref([  {    text: "Tom",    value: "Tom",  },  {    text: "cad",    value: "cad",  },  {    text: "kmi",    value: "kmi",  },  {    text: "Bob",    value: "Bob",  },]);// 组件提供筛选方式,只筛选当前展示数据中是否具有满足条件的数据const filterHandler = (value: string, row: any, column: any) => {  const property = column["property"];  return row[property] === value;};onMounted(() => {  transferData.value = tableData;  for (    let i = (currentPage4.value - 1) * pageSize4.value;    i  

上一篇:揭秘废墨清零软件,省钱利器,轻松解决打印成本难题!

下一篇:揭秘OZ单位的神秘面纱,真相大解密!