element-plus 表格-方法、事件、属性的使用

记录element-plus 表格的使用。方法、事件、属性的使用。因为是vue3的方式用到了const install = getCurrentInstance();才能获取表格的相关信息

没解决怎么获取选中的行的行号,采用自己记的方式实习的。

利用row-class-name="setRowClass"实现样式的简单设定

<template>
  <h2>表格的方法、事件、属性的使用</h2>
  <el-button type="primary" @click="setSelected">setSelected 1</el-button>
  <el-button type="primary" @click="clearSelected">clearSelected</el-button>

  <el-table ref="tableRef" :data="tableData" border style="width: 100%" highlight-current-row
    :row-class-name="setRowClass" @row-click="row_clicked">
    <el-table-column type="index" label="序号" width="100" />
    <el-table-column prop="date" label="Date" width="180" />
    <el-table-column prop="name" label="Name" width="180" />
    <el-table-column prop="address" label="Address" />
  </el-table>
</template>

<script lang="ts">
import { defineComponent, reactive, ref, getCurrentInstance, } from 'vue'

export default {
  setup() {
    const install = getCurrentInstance();
    const tableRef = ref();
    const curIndex = ref(0);

    const tableData = reactive([
      {
        date: '2016-05-03',
        name: 'Tom',
        address: 'No. 189, Grove St, Los Angeles',
      },
      {
        date: '2016-05-02',
        name: 'Tom',
        address: 'No. 189, Grove St, Los Angeles',
      },
      {
        date: '2016-05-04',
        name: 'Tom',
        address: 'No. 189, Grove St, Los Angeles',
      },
      {
        date: '2016-05-01',
        name: 'Tom',
        address: 'No. 189, Grove St, Los Angeles',
      },
    ]);

    function setSelected() {
      console.log('setSelected');
      curIndex.value = 1;
      install.refs.tableRef.setCurrentRow(tableData[1]);
    }

    function clearSelected() {
      console.log('clearSelected')
      //清除选中的项 用于单选表格,设定某一行为选中行, 如果调用时不加参数,则会取消目前高亮行的选中状态
      install.refs.tableRef.setCurrentRow();
      curIndex.value = -1;
    }
    function setRowClass(row) {
      // 把每一行的索引放进,自己记rowindex
      row.row.my_index = row.rowIndex;
      if (row.rowIndex == curIndex.value) {
        return "myClass";
      }
    }

    function row_clicked(row, column, event) {
      //获取行号不行。。。。
      //利用自己记的my_index实现
      curIndex.value = row.my_index;
      console.log('row_clicked', row.my_index, row.date, row.name, row.address);
    }
    return { tableData, tableRef, curIndex, setSelected, clearSelected, setRowClass, row_clicked }
  },

}
</script>


<!-- 
<script lang="ts" setup >
import { getCurrentInstance, reactive, ref } from 'vue'

const install = getCurrentInstance();
const tableRef = ref();
const curIndex = ref(0);

const tableData = reactive([
  {
    date: '2016-05-03',
    name: 'Tom',
    address: 'No. 189, Grove St, Los Angeles',
  },
  {
    date: '2016-05-02',
    name: 'Tom',
    address: 'No. 189, Grove St, Los Angeles',
  },
  {
    date: '2016-05-04',
    name: 'Tom',
    address: 'No. 189, Grove St, Los Angeles',
  },
  {
    date: '2016-05-01',
    name: 'Tom',
    address: 'No. 189, Grove St, Los Angeles',
  },
])


function setSelected()
{
  console.log('setSelected');
  curIndex.value =  1;
  install.refs.tableRef.setCurrentRow(tableData[1]);
  

}
function clearSelected()
{
  console.log('clearSelected')
   //清除选中的项 用于单选表格,设定某一行为选中行, 如果调用时不加参数,则会取消目前高亮行的选中状态
  install.refs.tableRef.setCurrentRow(); 
  curIndex.value =  -1;
}

function setRowClass(row)
{
  // 把每一行的索引放进,自己记rowindex
  row.row.my_index = row.rowIndex;
  if (row.rowIndex == curIndex.value)
  {
    return "myClass";
  }
}

function row_clicked(row, column, event)
{
  //获取行号不行。。。。
  //利用自己记的my_index实现
  curIndex.value =  row.my_index;
  console.log('row_clicked',row.my_index, row.date,row.name,row.address);
}

</script> 
-->

<style >
.myClass {
  background-color: rgb(16, 95, 95) !important;
  color: blueviolet;
}
</style>

在Vue3中使用Element Plus的表格编辑,你可以按照以下步骤进操作。首先,你需要在Vue组件中引入Element Plus的表格组件和相关样式。然后,你可以在模板中使用`<el-table>`标签来创建表格,并设置相应的数据源。接下来,你可以使用`<el-table-column>`标签来定义表格的列,并在其中使用`<template>`标签来自定义列的内容。在自定义内容中,你可以使用`#default="scope"`来声明使用数据,并通过`scope.row`来获取数据。例如: ```html <template> <el-table :data="tableData"> <el-table-column prop="name" label="姓名"></el-table-column> <el-table-column prop="age" label="年龄"></el-table-column> <el-table-column label="操作"> <template #default="scope"> <el-button @click="handleClick(scope.row)" type="text" size="small">查看</el-button> <el-button type="text" size="small">编辑</el-button> </template> </el-table-column> </el-table> </template> ``` 在上面的代码中,`tableData`是表格的数据源,`name`和`age`是数据对象的属性。通过使用`<el-table-column>`标签和`<template>`标签,你可以自定义表格的列和列的内容。在自定义内容中,你可以根据需要进相应的操作,比如点击按钮触发事件等。希望这个例子对你有帮助! #### 引用[.reference_title] - *1* *2* [vue3使用element-plus的自定义列表格](https://blog.csdn.net/m0_46627730/article/details/117201090)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [vue3 + Element Plus动态生成表格,并实现内容可编辑](https://blog.csdn.net/ymzhaobth/article/details/104716431)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值