广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >vue基础之ElementUI表格详解
  • 899
分享到

vue基础之ElementUI表格详解

2024-04-02 19:04:59 899人浏览 薄情痞子
摘要

目录ElementUI 表格示例:一个基本的表格el-table的属性el-table-column的属性多级表头获取表格,重点说下!!!单选多选排序筛选自定义列展开行 总

ElementUI 表格

前置工作: 安装好Vue和elemetUI。如果是按需引入,请确保TableTableColumn模块已经引入

示例:一个基本的表格

<template>
<el-table
          :data="tableData"
          stripe="true"
          style="width: 100%">
    <el-table-column
                     prop="name"
                     label="名称">
    </el-table-column>
    <el-table-column
                     prop="todayBuy"
                     label="日购买">
    </el-table-column>
    <el-table-column
                     prop="monthBuy"
                     label="月购买">
    </el-table-column>
    <el-table-column
                     prop="totalBuy"
                     label="总共购买">
    </el-table-column>
</el-table>
</template>
<script>
export default {
    name:"home",
    data(){
        return {
            tableData: [
            {
                name: 'oppo',
                todayBuy: 500,
                monthBuy: 3500,
                totalBuy: 22000
            },
            {
                name: 'vivo',
                todayBuy: 300,
                monthBuy: 2200,
                totalBuy: 24000
            }// ...
            ]
        }
    }
}
</script>

请添加图片描述

el-table的属性

属性属性值说明
stripebool是否使用斑马纹
borderbool是否使用边框
height数值固定表头。只要设置了属性,就会自动固定表头
max-height数值位表格设置最大高度

el-table-column的属性

属性属性值说明
fixedtrue(默认;左)|left|right固定栏,滚动的时候会浮动起来,可以选择浮在哪一边

如果我们希望通过行内的一些属性来对行做不同的显示,那么我们可以给el-table添加row-class-name属性。

row-class-name属性值是一个回调函数

// ...
<script>
export default {
  methods: {
      // 处理函数
    tableRowClassName({row, rowIndex}) {
      if (rowIndex === 1) {
        return 'warning-row';
      } else if (rowIndex === 3) {
        return 'success-row';
      }
      return '';
    }
 }
}
</script>
<style>
.el-table .warning-row {
  background: oldlace;
}
.el-table .success-row {
  background: #f0f9eb;
}
</style>

多级表头

通过<el-column>嵌套实现多级表头,数据更具prop进行遍历,看如下案例

<el-table
    :data="tableData"
    style="width: 100%">
    <el-table-column
      prop="date"
      label="日期"
      width="150">
    </el-table-column>
    <el-table-column label="配送信息">
      <el-table-column
        prop="name"
        label="姓名"
        width="120">
      </el-table-column>
        <!-- 地址没有家prop属性,所以不会对数据流影响 -->
      <el-table-column label="地址">
        <el-table-column
          prop="province"
          label="省份"
          width="120">
        </el-table-column>
        <el-table-column
          prop="city"
          label="市区"
          width="120">
        </el-table-column>
        <el-table-column
          prop="address"
          label="地址"
          width="300">
        </el-table-column>
        <el-table-column
          prop="zip"
          label="邮编"
          width="120">
        </el-table-column>
      </el-table-column>
    </el-table-column>
  </el-table>

效果如下

请添加图片描述

获取表格,重点说下!!!

js中如何获取表格?,通过给<el-table>添加ref属性为表格做唯一标识

<el-table highlight-current-row current-change="changerow" ref="signtable">
</el-table>
// ...
<script>
// ...
     methods: {
      setCurrent(row) {
          // 通过this.$refs.<表格ref值>
          // 设置表格的的二行为选中
        this.$refs.singleTable
      },
// ...
</script>

单选

只需要配置highlight-current-row属性即可实现单选。之后由current-change事件来管理选中时触发的事件,它会传入currentRowoldCurrentRow。如果需要显示索引,可以增加一列el-table-column,设置type属性为index即可显示从 1 开始的索引号

<el-table highlight-urrent-row current-change="changerow">
    <el-column prop="name" label="姓名"></el-column>
    <el-column prop="address" label="地址"></el-column>
    <el-column prop="email" label="邮箱"></el-column>
</el-table>
<script>
// ...
     methods: {
      setCurrent(row) {
          // 设置表格的的二行为选中
        this.$refs.singleTable.setCurrentRow(1);
      },
// ...
</script>

多选

手动添加一个<el-column>属性,添加type="selection",会调价一行多选按钮

<template>
      <!-- 使用 selection-change监听选项改变,传入一个函数名 -->
  <el-table
    ref="multipleTable"
    :data="tableData"
    tooltip-effect="dark"
    style="width: 100%"
    @selection-change="handleSelectionChange">
      <!-- type="selection" 生成多选 -->
    <el-table-column
      type="selection"
      width="55">
    </el-table-column>
    <el-table-column
      label="日期"
      width="120">
      <template slot-scope="scope">{{ scope.row.date }}</template>
    </el-table-column>
    <el-table-column
      prop="name"
      label="姓名"
      width="120">
    </el-table-column>
    <el-table-column
      prop="address"
      label="地址"
      show-overflow-tooltip>
    </el-table-column>
  </el-table>
</template>
<script>
    // 选中某一行,清除选项
</script>

使用js选中

<script>
    // this.$refs.<表单标识>.toggleRowSelection(row),row为tableData的一整行数据
    this.$refs.multipleTable.toggleRowSelection(row);
    // this.$refs.<表单标识>.clearSelection();全不选
	this.$refs.multipleTable.clearSelection();
</script>

排序

在表格中定义default-sort定义默认排序列和排序规则

通过给列添加srtotable属性赋予列排序功能

<template>
<!-- 在表格中设设置默认排序规则 -->
	<el-table
		:default-sort="{prop:'todayBuy',order:'descending'}">
        <el-table-column
                         prop="name"
                         label="名称">
    	</el-table-column>
        <el-table-column
                         prop="todayBuy"
                         label="日购买">
	    </el-table-column>
        <el-table-column
                         prop="monthBuy"
                         label="月购买">
    	</el-table-column>
        <!-- 在表格中添加srottable属性,会添加字段排序功能 -->
        <el-table-column
                         srottable
                         prop="totalBuy"
                         label="总共购买"
                         >
    	</el-table-column>
    </el-table>
    </el-table>
</template>

筛选

在列中定义:filters属性,值为一个[{ text: '', value: '' }] 的选项数组,提供给用户筛选。同时,指定处理的回调函数:filter-method,值为函数名。有三个参数,选中的值、遍历时候的行、遍历时候的列

<template>
<!-- ... 设置选项和处理函数-->
	<el-table-column
                 :filters="[{text:'300',value:'300'},{text:'800',value:'800'}]"
                 :filter-method="handleFilter"
                 prop="monthBuy"
                 label="月购买">
    </el-table-column>
<!-- ... -->
</template>
<script>
handleFilter(val,row){
	return row.todayBuy == val
}
</script>

请添加图片描述

自定义列

一般我们会添加一个操作列,如删除和编辑。那么我们可以不指定prop属性,然后为列添加其他内容如下案例。同时,我们可以通过列上定义slot-scope="scope",通过scope来获取列和行。一下直接使用官网案例

<template>
  <el-table
    :data="tableData"
    style="width: 100%">
    <el-table-column
      label="日期"
      width="180">
        <!-- 定义slot-scope="scope"后就可在scope中获取列和行数据了 -->
      <template slot-scope="scope">
        <i class="el-icon-time"></i>
        <span style="margin-left: 10px">{{ scope.row.date }}</span>
      </template>
    </el-table-column>
    <el-table-column
      label="姓名"
      width="180">
        <!-- 定义slot-scope="scope"后就可在scope中获取列和行数据了 -->
      <template slot-scope="scope">
        <el-popover trigger="hover" placement="top">
          <p>姓名: {{ scope.row.name }}</p>
          <p>住址: {{ scope.row.address }}</p>
          <div slot="reference" class="name-wrapper">
            <el-tag size="medium">{{ scope.row.name }}</el-tag>
          </div>
        </el-popover>
      </template>
    </el-table-column>
    <el-table-column label="操作">
        <!-- 定义slot-scope="scope"后就可在scope中获取列和行数据了 -->
      <template slot-scope="scope">
        <el-button
          size="mini"
          @click="handleEdit(scope.$index, scope.row)">编辑</el-button>
        <el-button
          size="mini"
          type="danger"
          @click="handleDelete(scope.$index, scope.row)">删除</el-button>
      </template>
    </el-table-column>
  </el-table>
</template>
<script>
  export default {
    data() {
      return {
        tableData: [{
          date: '2016-05-02',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        }, {
          date: '2016-05-04',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1517 弄'
        }, {
          date: '2016-05-01',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1519 弄'
        }, {
          date: '2016-05-03',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1516 弄'
        }]
      }
    },
    methods: {
        // 按钮的点击函数
      handleEdit(index, row) {
        console.log(index, row);
      },
      handleDelete(index, row) {
        console.log(index, row);
      }
    }
  }
</script>

展开行

知识多又杂,一点点积累着,因为需求也是五花八门,用得上的。

在列(el-column)中添加属性 type="expand"就可设置为展开行,展开的内容定义在列标签内。属性的获取同样是通过slot-scope="scope"详情如下案例:

<template>
<el-table :data="tableData">
    <el-table-cloumn type="expand">
        <template slot-scope="scope">
			<el-card>
                <p>名称:{{scope.row.name }}</p>
                <p>地址:{{scope.row.address }}</p>
             </el-card>
        </template>
    </el-table-cloumn>
</el-table>
</template>
<script>
  export default {
    data() {
      return {
        tableData: [{
          id: '12987125',
          name: '好滋好味鸡蛋仔',
          cateGory: '江浙小吃、小吃零食',
          desc: '荷兰优质淡奶,奶香浓而不腻',
          address: '上海市普陀区真北路',
          shop: '王小虎夫妻店',
          shopId: '10333'
        }, {
          id: '12987126',
          name: '好滋好味鸡蛋仔',
          category: '江浙小吃、小吃零食',
          desc: '荷兰优质淡奶,奶香浓而不腻',
          address: '上海市普陀区真北路',
          shop: '王小虎夫妻店',
          shopId: '10333'
        }]
      }
    }
  }
</script>

 总结

本篇文章就到这里了,希望能给您带来帮助,也希望您能够多多关注编程网的更多内容!

--结束END--

本文标题: vue基础之ElementUI表格详解

本文链接: https://www.lsjlt.com/news/138160.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • vue基础之ElementUI表格详解
    目录ElementUI 表格示例:一个基本的表格el-table的属性el-table-column的属性多级表头获取表格,重点说下!!!单选多选排序筛选自定义列展开行 总...
    99+
    2022-11-13
  • vue基础之详解ElementUI的表单
    目录ElementUI表单一个简单的案例表单的主要组件表单组件的使用行内的表单对齐方式表单验证自定义的验证规则表单内组件尺寸控制总结form模块的属性form模块的方法Form Me...
    99+
    2022-11-13
  • vue基础语法之插值表达式详解
    目录一、vscode插件介绍二、插值表达式介绍三、插值表达式示例1四、插值表达式示例2五、插值表达式注意点六、插值表达式补充总结一、vscode插件介绍 在我们演示插值表达式之前,我...
    99+
    2022-11-13
  • Vue基础之侦听器详解
    目录vue中什么是侦听器侦听器的用法vue侦听器-watchvue侦听器-深度侦听和立即执行总结vue中什么是侦听器 开发中我们在data返回的对象中定义了数据,这个数据可...
    99+
    2022-11-12
  • Python基础详解之列表复制
    目录一、前言二、直接赋值三、用切片赋值四、copy()复制实现赋值五、deepcopy()复制实现赋值六、copy()和deepcopy()的区别6.1  copy()6....
    99+
    2022-11-12
  • JSP之EL表达式基础详解
    一、EL表达式简介 EL表达式全称:Expression Language,即表达式语言 EL表达式作用:代替JSP页面中表达式脚本进行数据的输出 EL表达...
    99+
    2022-11-12
  • Python基础之字符串格式化详解
    目录一、前言二、百分号2.1 通过位置传参2.2 通过关键字传参三、 format 方式3.1 参数数据类型3.2 传参的方式3.3 格式化的其他配置参数3.4 格式化时间一、前言 ...
    99+
    2022-11-12
  • Vue elementUI表单嵌套表格并对每行进行校验详解
    目录效果展示代码链接关键代码表格数据组件嵌套校验方法重置方法完整代码总结效果展示 先看看这是不是需要的效果^_^ 如图,ElementUI 表单里嵌套了表格,表格内每行能进行【保存...
    99+
    2022-11-12
  • Java基础之Maven详解
    目录一、Maven环境的搭建1. 为什么要学习Maven?2. Maven项目架构管理工具3. 下载安装Maven4. 配置环境变量5. 阿里云...
    99+
    2022-11-12
  • Java基础之StringBuffer详解
    目录一、前言二、用法三、结果四、长度 容量五、IStringBuffer接口六、value和capacity一、前言 StringBuffer是可变长的字符串 1.append 追加...
    99+
    2022-11-12
  • Java基础之ClassLoader详解
    目录一、ClassLoader简介二、内置的CLassLoader的类型三、BootstrapClassLoader四、ExtClassLoader五、AppClassLoader六...
    99+
    2022-11-12
  • Java基础之FastJson详解
    目录一、fastJson将json格式字符串转化成List集合二、fastJson将json格式字符串转化成对象三、FastJson将对象或集合转化成json格式字符串四、FastJ...
    99+
    2022-11-12
  • Java基础之TreeMap详解
    目录一、写在前面二、定义三、成员变量四、内部类五、构造器六、成员方法一、写在前面 TreeMap的底层数据结构是红黑树,且TreeMap可以实现集合元素的排序。 所以TreeMap...
    99+
    2022-11-12
  • vue基础之面包屑和标签tag详解
    目录面包屑导航(breadcrumb)标签(tag)1.在main.js中引用tag2.在页面或组件中使用tag3.Tag的属性4.Tag的事件有两个,点击和关闭总结面包屑导航(br...
    99+
    2022-11-13
  • JavaScript基础之运算符与表达式详解
    目录一、===二、||三、与..四、...五、[] {}[]{}一、=== 严格相等运算符,用作逻辑判断 1 == 1 // 返回 true 1 == '1' ...
    99+
    2023-05-16
    JavaScript运算符 表达式 JavaScript运算符 JavaScript 表达式
  • JavaScript基础之函数详解
    目录一、函数简介1.1.函数的创建1.2.函数的参数和返回值二、函数的类型2.1. 构造函数2.2. 立即执行函数2.3. 构造函数的原型prototype2.4. 函数中的this...
    99+
    2022-11-12
  • Python基础之time库详解
    一、前言 time库运行访问多种类型的时钟,这些时钟用于不同的场景。本篇,将详细讲解time库的应用知识。 二、获取各种时钟 既然time库提供了多种类型的时钟。下面我们直接来获取这些时钟,对比其具体的用途。具体代码...
    99+
    2022-06-02
    python time库 python时间处理
  • java基础之方法详解
    目录一、什么是方法二、方法的定义三、方法的调用四、方法的重载五、递归一、什么是方法 Java方法是语句的集合,他们在一起执行一个功能。 1.方法是解决一类问题的步骤的有序...
    99+
    2022-11-12
  • Python基础之进程详解
    目录一、前言二、基本用法三、创建单个进程四、创建多个进程五、进程池六、锁七、进程间通信八、信号量九、数据共享十、总结一、前言 进程,一个新鲜的字眼,可能有些人并不了解,它是系统某个运...
    99+
    2022-11-12
  • 详解Angular之路由基础
    目录一、路由相关对象二、路由对象的位置三、路由配置四、代码中通过Router对象导航五、配置不存在的路径六、重定向路由七、在路由时候传递数据一、路由相关对象 Router和Rout...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作