Element UI 表格单选、多选情景

这篇具有很好参考价值的文章主要介绍了Element UI 表格单选、多选情景。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近在使用Element UI编写简单前端页面时会遇到需要对表格进行选择操作的场景。在网络上面查询资料时发现实现方式多的看花眼,索性自己总结一个。

话不多说,搬代码来看看~

单选:

<template>
    ......
      <div class="table_content">
        <el-table ref="multipleTable"
                    :data="tableData"
                    :header-cell-style="tableHeaderColor"
                    style="width: 100%; height: 100%"
                    border
                    size="big"
                    @selection-change="handleSelectionChange"
                    @select-all="handleSelect"
                    @select="handleSelect">
          <el-table-column type="selection" width="80" align="center"/>
          <el-table-column type="index" label="序号" width="80" align="center"></el-table-column>
          <el-table-column prop="name" label="节目名称" width="220" align="center"></el-table-column>
          <el-table-column prop="type" label="类型" width="100" align="center"></el-table-column>
          <el-table-column prop="actor" label="表演者" align="center"></el-table-column>
        </el-table>
      </div>
    ......
</template>

<script>
export default {
  data() {
    return {
      tableData: [
        { name: '《墩墩舞》', type: '舞蹈',  actor: 'XXX' },
        { name: '《茶艺》', type: '茶艺',  actor: 'xxx' },
        { name: '《我爱上班》', type: '朗诵',  actor: 'xxx' },
        { name: '《欢乐的跳吧》', type: '舞蹈',  actor: 'xxx' },
        { name: '《光的方向》', type: '歌唱',  actor: 'xxx' },
        { name: '《明天会更好》', type: '合唱',  actor: 'xxx' },
      ],
      multipleSelection: []
    }
  },
  created() {
  },
  mounted() {
  },
  methods: {
    tableRowStyle({ row, rowIndex }) {
      return 'background-color:pink;font-size:15px;'
    },
    tableHeaderColor({ row, column, rowIndex, columnIndex }) {
      return 'background-color:#e0b33a;color:#fff;font-wight:500;font-size:28px;text-align:center'
    },
    handleSelectionChange(val) {
      this.multipleSelection = val;
    },
    handleSelect (selection, row) {
      //阻止全选框原有逻辑
      this.$refs.multipleTable.clearSelection()
      if (row) {
        if (selection.length === 1) {
            this.multipleSelection = row
            this.$refs.multipleTable.toggleRowSelection(row, true)
        }
        else if (selection.length > 1) {
            this.multipleSelection = selection[0]
            this.$refs.multipleTable.toggleRowSelection(selection[0], true)
            this.$message('抱歉,每人只能选择一个节目,要专一噢~')
        }
      }
    }
  }
}
</script>

Element UI 表格单选、多选情景Element UI 表格单选、多选情景

从单选这一块需求来看,至少满足下面两点才能算是完成:

  • 全选框的点击只能取消其他框的选择,不能完成之前的全选功能
  •  选择框被复选的时候需要取消之前的选择

在官网上有三个表格事件,分别用来操作选择框、全选框、选择改变的事件。这三个事件我使用两个函数进行控制:handleSelectionChange、handleSelect。handleSelectionChange函数在每次操作选择框的时候修改选择到的数据。handleSelect函数在操作全选框的时候先清空全选选择,一旦没有进行单选框操作就默认为取消全选。handleSelect函数操作单选框的话,如果当前只有一个selection则选中,选中多个selection的话,则选中上一次选中的selection,新的selection会被取消。

多选:

只需删除select-all、select表格事件及方法,保留如下代码即可

<template>
    ......
      <div class="table_content">
        <el-table ref="multipleTable"
                    :data="tableData"
                    :header-cell-style="tableHeaderColor"
                    style="width: 100%; height: 100%"
                    border
                    size="big"
                    @selection-change="handleSelectionChange">
          <el-table-column type="selection" width="80" align="center"/>
          <el-table-column type="index" label="序号" width="80" align="center"></el-table-column>
          <el-table-column prop="name" label="节目名称" width="220" align="center"></el-table-column>
          <el-table-column prop="type" label="类型" width="100" align="center"></el-table-column>
          <el-table-column prop="actor" label="表演者" align="center"></el-table-column>
        </el-table>
      </div>
    ......
</template>

<script>
export default {
  data() {
    return {
      tableData: [
        { name: '《墩墩舞》', type: '舞蹈',  actor: 'xxx' },
        { name: '《茶艺》', type: '茶艺',  actor: 'xxx' },
        { name: '《我爱上班》', type: '朗诵',  actor: 'xxx' },
        { name: '《欢乐的跳吧》', type: '舞蹈',  actor: 'xxx' },
        { name: '《光的方向》', type: '歌唱',  actor: 'xxx' },
        { name: '《明天会更好》', type: '合唱',  actor: 'xxx' },
      ],
      multipleSelection: []
    }
  },
  created() {
  },
  mounted() {
  },
  methods: {
    tableRowStyle({ row, rowIndex }) {
      return 'background-color:pink;font-size:15px;'
    },
    tableHeaderColor({ row, column, rowIndex, columnIndex }) {
      return 'background-color:#e0b33a;color:#fff;font-wight:500;font-size:28px;text-align:center'
    },
    handleSelectionChange(val) {
      this.multipleSelection = val;
    }
  }
}
</script>

Element UI 表格单选、多选情景文章来源地址https://www.toymoban.com/news/detail-507409.html

到了这里,关于Element UI 表格单选、多选情景的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • element-ui 改变单选框,多选框的选中颜色

    @element-ui 改变单选框,多选框的颜色 注意 是写在less文件中,并在vue.config.js中配置

    2024年02月12日
    浏览(38)
  • vue使用Element UI时,el-table表格整行操作单选

    需求:表格复选修改为单选,只可选择一个;不满足条件的不可勾选;可进行整行操作 注意使用的方法. 需求由复选改为单选后, 左上角全选框要进行隐藏 ,复选框也变成单选框,这里是通过css样式进行调整的 勾选复选框的select和整行操作的row-click可以共用同一个方法,

    2024年02月14日
    浏览(33)
  • Element Ui 实现表格单选功能

    今天碰到一个需求,把element-ui中的table多选框改成单选框,实现单选功能 话不多说,直接上代码 如果这篇文章对您有用的话,记得一键三连 !👀

    2024年02月11日
    浏览(27)
  • Element-Puls Form表单内嵌套el-table表格,根据表格复选框多选或单选动态设置行的验证规则

    根据 Table 表格内的复选框来控制当前选中行是否添加必填校验规则 我们需要设置一个 flag 来标识已勾选的行,el-table渲染数据结构是数组对象形式,我们可以在每个对象中手动加如一个标识,例如默认:selected : false,如你的源数据中已有类似key,则可用它作于唯一标识 htm

    2024年02月02日
    浏览(45)
  • vue使用Element UI时,el-table表格整行操作单选禁选并隐藏全选框

    需求:表格复选修改为单选,只可选择一个;不满足条件的不可勾选;可进行整行操作 注意使用的方法. 需求由复选改为单选后, 左上角全选框要进行隐藏 ,复选框也变成单选框,这里是通过css样式进行调整的 勾选复选框的select和整行操作的row-click可以共用同一个方法,

    2024年02月13日
    浏览(35)
  • element ui 树形-懒加载-表格-多选 勾选问题

            row-key=\\\"id\\\"         lazy         :load=\\\"load\\\"         :tree-props=\\\"{           children: \\\'children\\\',           hasChildren: \\\'hasChildren\\\',         }\\\" 1、勾选父级时子级不会勾选上 一般我们实现表格多选功能是这样的:这里不再使用这种方式  第一步:需要我们手动写个勾选表头

    2023年04月09日
    浏览(29)
  • element-ui table 表格控件实现单选功能

    今天遇到一个需求,感觉挺简单的,需求如下: 就是一个表格,在表格的前面加上一个选择框,注意: 只能单选 然后我就去element ui上粘代码: 虽然element ui上有对应的单选表格,可是并不符合我的需求 然后我又发现下面有一个多选的表格,样式虽然相似,可是还是不符合我

    2024年02月11日
    浏览(42)
  • element-UI表格中多选框回显默认选中

    1、通过@selection-change=\\\"handleSelectionChange\\\"获取勾选的数据 2、通过this.$refs.multipleTable.toggleRowSelection(row, true);将数据回显 注意:toggleRowSelection方法的row数据必须是从tableData中获取  

    2024年02月12日
    浏览(38)
  • vue Element-ui 表格多选 修改选中行背景色

    转自:https://www.cnblogs.com/Amerys/p/14688342.html 整体思路方式: 1、给获取到的数据添加自定义的className 2、在点击行(row-click)和手动点击勾选框的事件(select-all)中获取到当前的row的className,直接修改className即可 点击查看事件说明 3、在行的 className 的回调方法中(row-class-name)直接返回

    2024年02月11日
    浏览(45)
  • Element UI 多选表格【翻页多选】全能版(含翻页多选数据反显、toggleRowSelection失效的原因解析和解决方案)

    data中定义 selectedList 数组保存选中的数据 在页面初次渲染、翻页、切换每页数据数量等每次重新获取表格数据渲染表格时,都根据 selectedList 勾选表格中已经选中的行 切换单行勾选状态时,判断是选中还是取消选中,选中则增加选中项,取消选中则移除选中项。 切换全选和

    2023年04月10日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包