element-plus表格组件el-table 的使用

news2024/9/22 8:10:55

表格是在前端页面中是经常被用到的,尤其是管理系统,几乎每个页面都会存在表格,所以掌握表格组件是非常有必要的。element-plus提供el-table,el-table-column来渲染表格,

1. el-table

组件主要属性

属性名作用值类型枚举值默认值
data表格数据对象数组[]
row-key关键属性,用于加速渲染的,类似v-for的key属性function 或string
border是否有边框booleanfalse
stripe是否有斑马线booleanfalse
highlight-current-row高亮选择的行booleanfalse
tree-props子属性以属性结构映射object{ hasChildren: ‘hasChildren’, children: ‘children’ }
lazy懒加载子元素booleanfalse
load展开子元素时加载函数,可远程加载子元素,返回promisefunction

组件主要事件

事件名名作用
select选择行对象数组
sort-change排序function 或string
current-change当前选择的行boolean
stripe是否有斑马线boolean
highlight-current-row高亮选择的行boolean
page-sizes每页条目选择列表数字数组
layout组件布局 ,上下翻页,跳页等布局设置 ,多项逗号分割字符串

1. el-table-column (表格列组件)

组件主要属性

属性名作用值类型枚举值默认值
label表格列的标题string
prop属性名于el-table的data元素的属性名对应string
type类型booleanselection,index,expandfalse
width宽度,单位pxnumber
fixed是否固定列stringleft,rightfalse
sortable高亮选择的行booleanfalse
sort-method指定数据按照哪个属性进行排序,仅当sortable设置为true的时候有效。 应该如同 Array.sort 那样返回一个 Numberfunction
sort-by指定数据按照哪个属性进行排序,仅当 sortable 设置为 true 且没有设置 sort-method 的时候有效。 如果 sort-by 为数组,则先按照第 1 个属性排序,如果第 1 个相等,再按照第 2 个排序,以此类推Function,string,string[]false
sort-orders数据在排序时所使用排序策略的轮转顺序,仅当 sortable 为 true 时有效。 需传入一个数组,随着用户点击表头,该列依次按照数组中元素的顺序进行排序string[]

组件插槽

插槽名作用作用域属性
default自定义列内容row,column,$index
header自定义表头column,$indexcustom才有效

3.用法例子

<script setup lang="ts">
import { aG } from 'vitest/dist/reporters-LqC_WI4d.js';
import { onMounted, reactive, ref, watch } from 'vue'
const pageSizes = ref([10, 20, 50, 100]);

const currentPageSize = ref(10)
const currentPage = ref(1)


class Student {
  id: number
  name: string
  age: number
  address: string
  children: Student[]
  hasChildren: boolean

  constructor(id: number, name: string, age: number, address: string) {
    this.id = id
    this.name = name
    this.age = age
    this.address = address
    this.children = []
    this.hasChildren = false
  }
}


watch(currentPage, (newPage, oldPage) => {
  console.log(newPage, oldPage)
})


const tableData = ref([
  new Student(1, "zhangsanxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 30, "beijing"),
  new Student(2, "lisi1", 30, "shanghai"),
  new Student(3, "lisi2", 30, "shanghai"),
  new Student(4, "lisi3", 30, "shanghai"),
  new Student(5, "lisi4", 30, "shanghai"),
  new Student(6, "lisi5", 30, "shanghai"),
  new Student(7, "lisi6", 30, "shanghai"),
  new Student(8, "lisi7", 30, "shanghai"),
  new Student(9, "lisi8", 30, "shanghai"),
  {
    id: 10, name: "lisi8", age: 30, address: "shanghai",
    hasChildren: true,
    children: [
      {
        id: 91, name: "wangwu1", age: 30, address: "shenzhen"
      },
      {
        id: 92, name: "wangwu12", age: 30, address: "shenzhen"
      }
    ]
  },
])


const load = (
  row: Student,
  treeNode: unknown,
  resolve: (date: Student[]) => void
) => {
  setTimeout(() => {
    resolve([
      {
        id: 91, name: "wangwu1", age: 30, address: "shenzhen", hasChildren: false, children: []
      },
      {
        id: 92, name: "wangwu12", age: 30, address: "shenzhen", hasChildren: false, children: []
      },
    ])
  }, 1000)
}

const currentRow = ref()

const rowChange = (s: Student) => {
  console.log(s)
  
    //currentRow.value = s
  }


const sortChange = (cloumn: any, prop: string, order: string) => {
  console.log(cloumn, prop, order)
}


const selectChange=(selectionsS:Student[],row:Student)=>{
  console.log(selectionsS,row)
}

const toDo=(scope:any)=>{ 
  console.log(scope.id)
}


</script>


<template>

  <div>
    <el-container>
      <el-header></el-header>
      <el-main>
        <el-table :data="tableData" lazy :load="load" row-key="id" @select="selectChange"
          :tree-props="{ hasChildren: 'hasChildren', children: 'children' }" border stripe height="250" style="width:100%"
          highlight-current-row @sort-change="sortChange" @current-change="rowChange">
          <el-table-column label="id" sortable fixed prop="id" width="100"></el-table-column>
          <el-table-column label="name" sortable="custom" prop="name" width="100" show-overflow-tooltip>
          </el-table-column>
          <el-table-column label="age" prop="age">
          </el-table-column>
          <el-table-column label="address" prop="address">
          </el-table-column>
          <el-table-column fixed="right" label="Operations" min-width="120">
      <template #default="scope">
        <el-button
          link
          type="primary"
          size="small"
          @click.prevent="toDo(scope.row)"
        >
          Remove
        </el-button>
      </template>
    </el-table-column>
        </el-table>
      </el-main>
      <el-footer></el-footer>

    </el-container>


    <el-container>
      <el-header></el-header>
      <el-main>
        <el-table :data="tableData" border stripe height="250" style="width:100%" highlight-current-row @select="selectChange"
          @sort-change="sortChange" @current-change="rowChange">
          <el-table-column type="selection" width="100"></el-table-column>
          <el-table-column label="id" sortable fixed prop="id" width="100"></el-table-column>
          <el-table-column label="name" sortable="custom" prop="name" width="100" show-overflow-tooltip>
          </el-table-column>
          <el-table-column label="age" prop="age">
          </el-table-column>
          <el-table-column label="address" prop="address">
          </el-table-column>
          <el-table-column fixed="right" label="Operations" min-width="120">
            <template #default="scope">
              <el-button type="primary" @click.prevent="toDo(scope.row)">修改</el-button>
            </template>
          </el-table-column>
        </el-table>
      </el-main>
      <el-footer></el-footer>

    </el-container>


    <el-pagination :page-sizes="pageSizes" v-model:page-size="currentPageSize" v-model:current-page="currentPage"
      layout="sizes,prev,next,jumper,pager,>" :total="200"></el-pagination>
  </div>



</template>

<style scoped></style>

在这里插入图片描述
https://element-plus.org/zh-CN/component/table.html#%E8%A1%A8%E6%A0%BC%E5%B8%83%E5%B1%80

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2048588.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C语言小项目】五子棋游戏

目录 前言 一、游戏规则 1.功能分析 2.玩法分析 3.胜负判定条件 二、游戏实现思路 三、代码实现与函数封装 1.项目文件创建 2.头文件说明 3.函数封装 1&#xff09;菜单实现 2&#xff09;进度条实现 3&#xff09;main函数实现 4&#xff09;Game函数 5&#xff0…

Java语言程序设计——篇十三(4)

&#x1f33f;&#x1f33f;&#x1f33f;跟随博主脚步&#xff0c;从这里开始→博主主页&#x1f33f;&#x1f33f;&#x1f33f; 欢迎大家&#xff1a;这里是我的学习笔记、总结知识的地方&#xff0c;喜欢的话请三连&#xff0c;有问题可以私信&#x1f333;&#x1f333;&…

下载中心: 使用异步方法生成文件任务+键集分页查询

文章目录 引言I 下载中心功能进度表设计异步处理文件生成案例II 键集分页查询提高查询效率解决分页查询出现数据重复或丢失案例III 工具线程池基于EasyExcel 生成 excel文件存储系统see also引言 需求: 根据查询条件导出数据,比如交易流水、设备安装资料。 流程设计:点击导…

牛客面经学习笔记(二)

锂离子电池的充电过程可以分为四个阶段&#xff1a;涓流充电&#xff08;低压预充&#xff09;、恒流充电、恒压充电以及充电终止。 阶段1&#xff1a;涓流充电——涓流充电用来先对完全放电的电池单元进行预充(恢复性充电)。在电池电压低于3V左右时采用涓流充电&#xff0c;涓…

Vue 生命周期详解含demo、面试常问问题案例

Vue 生命周期详解、面试常问问题案例 含 demo 文章目录 Vue 生命周期详解、面试常问问题案例 含 demo一、Vue 生命周期是什么二、Vue 中如何使用生命周期钩子1. **beforeCreate**2. **created**3. **beforeMount**4. **mounted**5. **beforeUpdate**6. **updated**7. **beforeD…

8.15笔记

一、mycat读写分离实现 1. 添加一个新的虚拟主机&#xff0c;设置ip为10.1.1.60,主机名为mycat.yuanyu.zhangmin.关闭防火墙 SELinux NetworkManager 2. 上传jdk和mycat安装包 3. 解压并且添加到指定的位置 [rootmycat ~]# ls anaconda-ks.cfg frp initserver.sh jdk1.8…

018集——递归函数和for循环对比(从1加到100实例) ——C#学习笔记

本例分别用递归函数和for循环&#xff0c;求出1到100的和&#xff1a; using System;namespace Mytest {class Mytest{static void Main(string[] args){Calculate Myc new Calculate();int YourNumber 100;int Mysum Myc.Xto1(YourNumber);Console.WriteLine("从1加到…

Element-03.组件-Pagination分页

一.常见组件-分页-属性 参数&#xff1a;background 说明&#xff1a;是否为分页按钮添加背景色 类型&#xff1a;boolean 有background即添加&#xff0c;没有则不添加 参数&#xff1a;layout 说明&#xff1a;组件布局&#xff0c;子组件名用逗号分隔 类型&#x…

86.小米相机修改拍照(尺寸,画幅,比例)的方法

目录 1.打开相机&#xff0c;拍照模式&#xff0c;上面有个箭头或三个点&#xff0c;点击 2.点击画幅 3.点击你想要的画幅即可。 想要修改手机照片的&#xff08;尺寸&#xff0c;画幅&#xff0c;比例&#xff09;时&#xff0c;总会去找分辨率&#xff0c;其实并不是&…

用后端实现一个简单的登录模块2 前端页面

该模块能做到的功能&#xff1a; 1阶&#xff1a;输入账号和密码&#xff0c;输入正确即可返回登录成功的信息&#xff0c;反之则登录失败 2阶&#xff1a;有简单的前端页面&#xff0c;有登录成功和失败的弹窗&#xff0c;还有登录成功的主页面 3阶&#xff1a;前端页面的注…

探索Python的中文转换魔法:zhconv库的神秘力量

文章目录 探索Python的中文转换魔法&#xff1a;zhconv库的神秘力量第一部分&#xff1a;背景介绍第二部分&#xff1a;库的概述第三部分&#xff1a;安装指南第四部分&#xff1a;函数使用示例第五部分&#xff1a;实际应用场景第六部分&#xff1a;常见问题与解决方案第七部分…

【Vue3】路由Query传参

【Vue3】路由Query传参 背景简介开发环境开发步骤及源码总结 背景 随着年龄的增长&#xff0c;很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来&#xff0c;技术出身的人总是很难放下一些执念&#xff0c;遂将这些知识整理成文&#xff0c;以纪念曾经努力学习奋斗的日子…

24/8/17算法笔记 策略梯度reinforce算法

import gym from matplotlib import pyplot as plt %matplotlib inline#创建环境 env gym.make(CartPole-v0) env.reset()#打印游戏 def show():plt.imshow(env.render(mode rgb_array))plt.show() show()定义网络模型 import torch #定义模型 model torch.nn.Sequential(t…

8月17日星期六今日早报简报微语报早读

8月17日星期六&#xff0c;农历七月十四&#xff0c;早报微语早读。 1、海关总署&#xff1a;接触过猴痘病例的人员入境时应主动申报&#xff1b; 2、284名运动员出征&#xff01;巴黎残奥会中国体育代表团成立&#xff1b; 3、四部门&#xff1a;继续执行对彩票一次中奖不超…

C语言 之 字符相关函数

文章目录 字符分类函数字符转换函数 本章内容主要讲的是c语言中的字符相关的一些函数的作用用法和使用 为了方便我们对字符的各种操作&#xff0c;C语⾔标准库中提供了⼀系列库函数&#xff0c;我们大概可以根据其功能分成两类函数 字符分类函数 C语言中有一系列函数是专门用…

【区块链+金融服务】基于 VoneBaaS 的区块链金融服务管理平台 | FISCO BCOS应用案例

在顺应数字经济发展、强化科技赋能金融的背景下&#xff0c;中央及地方政策层面鼓励“区块链 金融”应用示范项目&#xff0c; 在中小企业征信及风险管理、供应链金融等重点领域开展应用&#xff0c;探索建立区块链金融风险监控体系。同时&#xff0c;随着 科技金融服务逐步升…

学生阅读行为与图书预定平台的设计与实现(全网独一无二,24年最新定做)

目录&#xff1a; 前言&#xff1a; 具体功能如下&#xff1a; 1. 学生角色 2. 图书管理员 3. 图书采购人员 4. 系统管理员 技术栈介绍&#xff1a; 1. Springboot 2. MySQL 3. Vue 4. Java 系统详细界面&#xff1a; 为什么选择我&#xff1a; 前言&#xff1a; 博…

71、docker网络

一、docker网络&#xff1a; 1.1、默认模式&#xff1a; 桥接模式 部署好docker服务&#xff0c;启动之后&#xff0c;就会创建一个虚拟网桥&#xff0c;docker0&#xff0c;这是一个虚拟网络设备&#xff0c;类似于交换机。 [rootdocker1 ~]# ifconfig docker0: flags4163…

Linux:Linux环境基础开发工具使用

✨✨✨学习的道路很枯燥&#xff0c;希望我们能并肩走下来! 文章目录 目录 文章目录 前言 一. Linux 软件包管理器 yum 1.1 什么是软件包 1.2 查看软件包 1.3 如何安装软件 1.4 如何卸载软件 二 Linux编辑器-vim使用 ​编辑 2.1 vim的基本概念 2.2 vim正常模式命令集…

安装postgresql和PGVector

1. 概述 研发有需要&#xff0c;要使用PGVector做向量。简单记录安装postgresql和PGVector过程。 2. 参考 postgresql官方下载连接 postgresql官方linux yum安装 PostgreSQL的安装、配置与使用指南 PostgreSQL向量数据插件–pgvector安装 3. 安装 3.1 只安装postgresql&am…