single-select.vue 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. <template>
  2. <el-table
  3. ref="singleTableRef"
  4. :data="tableData"
  5. highlight-current-row
  6. style="width: 100%"
  7. @current-change="handleCurrentChange"
  8. >
  9. <el-table-column type="index" width="50" />
  10. <el-table-column property="date" label="Date" width="120" />
  11. <el-table-column property="name" label="Name" width="120" />
  12. <el-table-column property="address" label="Address" />
  13. </el-table>
  14. <div style="margin-top: 20px">
  15. <el-button @click="setCurrent(tableData[1])">Select second row</el-button>
  16. <el-button @click="setCurrent()">Clear selection</el-button>
  17. </div>
  18. </template>
  19. <script lang="ts" setup>
  20. import { ref } from 'vue'
  21. import { ElTable } from 'element-plus'
  22. interface User {
  23. date: string
  24. name: string
  25. address: string
  26. }
  27. const currentRow = ref()
  28. const singleTableRef = ref<InstanceType<typeof ElTable>>()
  29. const setCurrent = (row?: User) => {
  30. singleTableRef.value!.setCurrentRow(row)
  31. }
  32. const handleCurrentChange = (val: User | undefined) => {
  33. currentRow.value = val
  34. }
  35. const tableData: User[] = [
  36. {
  37. date: '2016-05-03',
  38. name: 'Tom',
  39. address: 'No. 189, Grove St, Los Angeles',
  40. },
  41. {
  42. date: '2016-05-02',
  43. name: 'Tom',
  44. address: 'No. 189, Grove St, Los Angeles',
  45. },
  46. {
  47. date: '2016-05-04',
  48. name: 'Tom',
  49. address: 'No. 189, Grove St, Los Angeles',
  50. },
  51. {
  52. date: '2016-05-01',
  53. name: 'Tom',
  54. address: 'No. 189, Grove St, Los Angeles',
  55. },
  56. ]
  57. </script>