文章目錄
- 使用ElementUI
- 使用在線引入的方式
- 表格
- 1. 帶狀態表格row-class-name="Function({row, rowIndex})/String"
- 2. 固定表頭(height="string/number"屬性)
- 2.1 屬性的取值
- 2.2 動態響應式高度
- 使用
- 演示
- 2.3 ??自定義滾動條樣式??
- 2.4 表頭高度定制
- 獲取一行信息slot-scope="scope"??
- 使用對象傳遞
- 解構對象傳遞
- 固定列(fixed)
- 流體高度(max-height)
- 流體高度(max-height)和固定表頭(height)的區別
- 多級表頭
- 單選
- @current-change="handleCurrentChange"
- 鼠標點擊哪一行哪一行變色highlight-current-row
- 用于單選表格setCurrentRow
- 綜合使用
- 多選
- 顯示不全提示屬性tooltip-effect
- 多選屬性 type="selection"
- 排序
使用ElementUI
使用在線引入的方式
由于ElementUI是**基于Vue2的組件庫
**,所以在線引入需要先引入Vue2,在去引入ElementUI。
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>引入Element組件</title><!-- 引入Element樣式 --><link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
</head><body><div id="app" ><el-button type="primary">主要按鈕</el-button></div></body>
<!-- 引入Vue2語法 -->
<script src="https://cdn.jsdelivr.net/npm/vue@2.7.16"></script>
<!-- 引入Element組件庫 -->
<script src="https://unpkg.com/element-ui/lib/index.js"></script>
<script>new Vue({el: '#app',data() {return {}},methods: {}})
</script></html>
演示
表格
官網網址:ElementUI表格
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>引入Element組件</title><!-- 引入Element樣式 --><link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
</head><style>.el-table .warning-row {background: oldlace;}.el-table .success-row {background: #f0f9eb;}
</style><body><div id="app"><table><tr><th>日期</th><th>姓名</th><th>地址</th></tr><tr v-for="item in tableData" :key="item.date"><td>{{item.date}}</td><td>{{item.name}}</td><td>{{item.address}}</td></tr></table><!-- el-table是ElementUI 提供的表格組件的標簽 相當于table標簽--><!-- :data是綁定數據,tableData是data中的數據 <img :src="變量">的src屬性也是這樣綁定的。--><!-- style是設置樣式,width是設置寬度 --><!-- stripe屬性是使用帶斑馬紋的表格,可以更容易區分出不同行的數據 --><!-- border屬性: 會給表格加上邊框 --><!-- :row-class-name="tableRowClassName" 是綁定方法,tableRowClassName是方法名 注意不能和stripe屬性一起使用 --><el-table :data="tableData" style="width: 100%" border :row-class-name="tableRowClassName"><!-- el-table-column標簽 這個相當于 <tr></tr>標簽 --><!-- label屬性相當于th標簽 --><!-- prop屬性相當于 每一列的 td標簽 --><!-- width屬性相當于td標簽的寬度 --><el-table-column prop="date" label="生日" width="180"></el-table-column><el-table-column prop="name" label="姓名" width="180"></el-table-column><el-table-column prop="address" label="地址" width="300"></el-table-column></el-table></div></body>
<!-- 引入Vue2語法 -->
<script src="https://cdn.jsdelivr.net/npm/vue@2.7.16"></script>
<!-- 引入Element組件庫 -->
<script src="https://unpkg.com/element-ui/lib/index.js"></script>
<script>new Vue({el: '#app',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: {tableRowClassName({ row, rowIndex }) {if (rowIndex === 1) {return 'warning-row';console.log(row);} else if (rowIndex === 3) {return 'success-row';}return '';}}})
</script></html>
1. 帶狀態表格row-class-name=“Function({row, rowIndex})/String”
2. 固定表頭(height="string/number"屬性)
2.1 屬性的取值
-
數值類型(如 height=“300”)??:單位默認為 px,表格高度固定為 300px,內容超出時自動出現垂直滾動條,表頭保持固定。
<el-table :data="tableData" height="300"> ... </el-table>
-
字符串類型(如 height=“100%”)??:高度值直接綁定到 style.height,表格高度受??父容器樣式控制??。需確保父容器有明確高度(如 100vh或固定 px),否則可能失效。
2.2 動態響應式高度
結合 Vue 的響應式變量動態調整高度:
使用
<el-table :height="tableHeight"> ... </el-table>
data() { return { tableHeight: 400 }; },
mounted() {// 根據窗口變化動態計算高度window.addEventListener('resize', () => {this.tableHeight = window.innerHeight * 0.6;});
}
演示
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>固定表頭</title><!-- 引入Element樣式 --><link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
</head><style></style><body><div id="app"><el-table :data="tableData" :height="tableHeight" border style="width: 50%"><el-table-column prop="date" label="日期" width="180"></el-table-column><el-table-column prop="name" label="姓名" width="180"></el-table-column><el-table-column prop="address" label="地址"></el-table-column></el-table></div></body>
<!-- 引入Vue2語法 -->
<script src="https://cdn.jsdelivr.net/npm/vue@2.7.16"></script>
<!-- 引入Element組件庫 -->
<script src="https://unpkg.com/element-ui/lib/index.js"></script><script>new Vue({el: '#app',data() {return {tableData: [{date: '2016-05-03',name: '王小虎1',address: '上海市普陀區金沙江路 1518 弄'}, {date: '2016-05-02',name: '王小虎2',address: '上海市普陀區金沙江路 1518 弄'}, {date: '2016-05-04',name: '王小虎3',address: '上海市普陀區金沙江路 1518 弄'}, {date: '2016-05-01',name: '王小虎4',address: '上海市普陀區金沙江路 1518 弄'}, {date: '2016-05-08',name: '王小虎5',address: '上海市普陀區金沙江路 1518 弄'}, {date: '2016-05-06',name: '王小虎6',address: '上海市普陀區金沙江路 1518 弄'}, {date: '2016-05-07',name: '王小虎7',address: '上海市普陀區金沙江路 1518 弄'}],tableHeight: 400}},methods: {},mounted() {// 根據窗口變化動態計算高度window.addEventListener('resize', () => {this.tableHeight = window.innerHeight * 0.6;console.log(11);});}})
</script></html>
2.3 ??自定義滾動條樣式??
自定義滾動條樣式??通過 CSS 覆蓋默認樣式(僅支持 Webkit 內核瀏覽器)
.el-table__body-wrapper::-webkit-scrollbar {width: 8px; /* 滾動條寬度 */background: #f1f1f1;
}
.el-table__body-wrapper::-webkit-scrollbar-thumb {background: #888;
}
2.4 表頭高度定制
表頭高度定制??使用 CSS 調整表頭行高(默認高度為 40px)
.el-table th.el-table__cell {height: 80px !important; /* 自定義高度 */vertical-align: middle; /* 內容垂直居中 */
}
獲取一行信息slot-scope="scope"??
Vue2獲取一行的信息使用的是作用插槽slot-scope="scope"??
- ??Vue 2??:使用
slot-scope="scope"
是標準寫法。 - Vue 3??:廢棄 slot-scope,
改用 v-slot或 #default
(如 <template #default=“{ row }”>)。若項目升級到 Vue 3,建議遷移至新語法。
使用對象傳遞
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>固定表頭</title><!-- 引入Element樣式 --><link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
</head><style>.el-table th.el-table__cell {height: 80px !important; /* 自定義高度 */vertical-align: middle; /* 內容垂直居中 */
}
</style><body><div id="app"><el-table :data="tableData" :height="tableHeight" border style="width: 50%"><el-table-column prop="date" label="日期" width="180"></el-table-column><el-table-column prop="name" label="姓名" width="180"></el-table-column><el-table-column prop="address" label="地址"></el-table-column><el-table-column label="操作"><template slot-scope="scope"><el-button @click="handleEdit(scope)">編輯</el-button></template></el-table-column></el-table></div></body>
<!-- 引入Vue2語法 -->
<script src="https://cdn.jsdelivr.net/npm/vue@2.7.16"></script>
<!-- 引入Element組件庫 -->
<script src="https://unpkg.com/element-ui/lib/index.js"></script><script>new Vue({el: '#app',data() {return {tableData: [{date: '2016-05-03',name: '王小虎1',address: '上海市普陀區金沙江路 1518 弄'}, {date: '2016-05-02',name: '王小虎2',address: '上海市普陀區金沙江路 1518 弄'}, {date: '2016-05-04',name: '王小虎3',address: '上海市普陀區金沙江路 1518 弄'}, {date: '2016-05-01',name: '王小虎4',address: '上海市普陀區金沙江路 1518 弄'}, {date: '2016-05-08',name: '王小虎5',address: '上海市普陀區金沙江路 1518 弄'}, {date: '2016-05-06',name: '王小虎6',address: '上海市普陀區金沙江路 1518 弄'}, {date: '2016-05-07',name: '王小虎7',address: '上海市普陀區金沙江路 1518 弄'}],tableHeight: 400}},methods: {handleEdit(scope) {console.log(scope);}},mounted() {// 根據窗口變化動態計算高度window.addEventListener('resize', () => {this.tableHeight = window.innerHeight * 0.6;console.log(11);});}})
</script></html>
點擊第一個編輯
按鈕結果如下:
所以我們一般傳入兩個值
<el-table :data="tableData" :height="tableHeight" border style="width: 50%">......<el-table-column label="操作"><template slot-scope="scope"><el-button @click="handleEdit(scope.$index, scope.row)">編輯</el-button></template></el-table-column>....</el-table>
methods: {handleEdit(i,row) {console.log(i,row);}},
解構對象傳遞
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>固定表頭</title><!-- 引入Element樣式 --><link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
</head><style>.el-table th.el-table__cell {height: 80px !important; /* 自定義高度 */vertical-align: middle; /* 內容垂直居中 */
}
</style><body><div id="app"><el-table :data="tableData" :height="tableHeight" border style="width: 50%"><el-table-column prop="date" label="日期" width="180"></el-table-column><el-table-column prop="name" label="姓名" width="180"></el-table-column><el-table-column prop="address" label="地址"></el-table-column><el-table-column label="操作"><template slot-scope="{ $index, row }"><el-button @click="handleEdit($index, row)">編輯</el-button></template></el-table-column></el-table></div></body>
<!-- 引入Vue2語法 -->
<script src="https://cdn.jsdelivr.net/npm/vue@2.7.16"></script>
<!-- 引入Element組件庫 -->
<script src="https://unpkg.com/element-ui/lib/index.js"></script><script>new Vue({el: '#app',data() {return {tableData: [{date: '2016-05-03',name: '王小虎1',address: '上海市普陀區金沙江路 1518 弄'}, {date: '2016-05-02',name: '王小虎2',address: '上海市普陀區金沙江路 1518 弄'}, {date: '2016-05-04',name: '王小虎3',address: '上海市普陀區金沙江路 1518 弄'}, {date: '2016-05-01',name: '王小虎4',address: '上海市普陀區金沙江路 1518 弄'}, {date: '2016-05-08',name: '王小虎5',address: '上海市普陀區金沙江路 1518 弄'}, {date: '2016-05-06',name: '王小虎6',address: '上海市普陀區金沙江路 1518 弄'}, {date: '2016-05-07',name: '王小虎7',address: '上海市普陀區金沙江路 1518 弄'}],tableHeight: 400}},methods: {handleEdit(i,row) {console.log(i,row);}},mounted() {// 根據窗口變化動態計算高度window.addEventListener('resize', () => {this.tableHeight = window.innerHeight * 0.6;console.log(11);});}})
</script></html>
固定列(fixed)
橫向內容過多時,可選擇固定列。
屬性:fixed
作用:列是否固定在左側或者右側,true 表示固定在左側
取值類型:string, boolean
取值:true, left, right
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>固定表頭</title><!-- 引入Element樣式 --><link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
</head><style></style><body><div id="app"><el-table :data="tableData" border style="width: 50%" >
<!-- fixed == fixed="left" --><el-table-column prop="date" label="日期" width="150"></el-table-column><el-table-column fixed prop="name" label="姓名" width="120"></el-table-column><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 fixed="right" label="操作" width="100"><template slot-scope="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></div></body>
<!-- 引入Vue2語法 -->
<script src="https://cdn.jsdelivr.net/npm/vue@2.7.16"></script>
<!-- 引入Element組件庫 -->
<script src="https://unpkg.com/element-ui/lib/index.js"></script><script>new Vue({el: '#app',data() {return {tableData: [{date: '2016-05-02',name: '王小虎',province: '上海',city: '普陀區',address: '上海市普陀區金沙江路 1518 弄',zip: 200333}, {date: '2016-05-04',name: '王小虎',province: '上海',city: '普陀區',address: '上海市普陀區金沙江路 1517 弄',zip: 200333}, {date: '2016-05-01',name: '王小虎',province: '上海',city: '普陀區',address: '上海市普陀區金沙江路 1519 弄',zip: 200333}, {date: '2016-05-03',name: '王小虎',province: '上海',city: '普陀區',address: '上海市普陀區金沙江路 1516 弄',zip: 200333}]}},methods: {},mounted() {}})
</script></html>
流體高度(max-height)
通過設置max-height屬性為 Table 指定最大高度。此時若表格所需的高度大于最大高度,則會顯示一個滾動條。
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>固定表頭</title><!-- 引入Element樣式 --><link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
</head><style></style><body><div id="app"><el-table :data="tableData" border max-height="200" style="width: 50%"><!-- fixed == fixed="left" --><el-table-column prop="date" label="日期" width="150"></el-table-column><el-table-column fixed prop="name" label="姓名" width="120"></el-table-column><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 fixed="right" label="操作" width="100"><template slot-scope="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></div></body>
<!-- 引入Vue2語法 -->
<script src="https://cdn.jsdelivr.net/npm/vue@2.7.16"></script>
<!-- 引入Element組件庫 -->
<script src="https://unpkg.com/element-ui/lib/index.js"></script><script>new Vue({el: '#app',data() {return {tableData: [{date: '2016-05-02',name: '王小虎',province: '上海',city: '普陀區',address: '上海市普陀區金沙江路 1518 弄',zip: 200333}, {date: '2016-05-04',name: '王小虎',province: '上海',city: '普陀區',address: '上海市普陀區金沙江路 1517 弄',zip: 200333}, {date: '2016-05-01',name: '王小虎',province: '上海',city: '普陀區',address: '上海市普陀區金沙江路 1519 弄',zip: 200333}, {date: '2016-05-03',name: '王小虎',province: '上海',city: '普陀區',address: '上海市普陀區金沙江路 1516 弄',zip: 200333}]}},methods: {},mounted() {}})
</script></html>
流體高度(max-height)和固定表頭(height)的區別
max-height:當小于指定高度,高度會變小
height:當小于指定高度,高度會有留白,不會變小
多級表頭
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>固定表頭</title><!-- 引入Element樣式 --><link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
</head><style></style><body><div id="app"><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><!-- 二級 地址 --><el-table-column label="地址"><!-- 三級 省份 市區 地址 郵編 --><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></div></body>
<!-- 引入Vue2語法 -->
<script src="https://cdn.jsdelivr.net/npm/vue@2.7.16"></script>
<!-- 引入Element組件庫 -->
<script src="https://unpkg.com/element-ui/lib/index.js"></script><script>new Vue({el: '#app',data() {return {tableData: [{date: '2016-05-03',name: '王小虎',province: '上海',city: '普陀區',address: '上海市普陀區金沙江路 1518 弄',zip: 200333}, {date: '2016-05-02',name: '王小虎',province: '上海',city: '普陀區',address: '上海市普陀區金沙江路 1518 弄',zip: 200333}, {date: '2016-05-04',name: '王小虎',province: '上海',city: '普陀區',address: '上海市普陀區金沙江路 1518 弄',zip: 200333}, {date: '2016-05-01',name: '王小虎',province: '上海',city: '普陀區',address: '上海市普陀區金沙江路 1518 弄',zip: 200333}, {date: '2016-05-08',name: '王小虎',province: '上海',city: '普陀區',address: '上海市普陀區金沙江路 1518 弄',zip: 200333}, {date: '2016-05-06',name: '王小虎',province: '上海',city: '普陀區',address: '上海市普陀區金沙江路 1518 弄',zip: 200333}, {date: '2016-05-07',name: '王小虎',province: '上海',city: '普陀區',address: '上海市普陀區金沙江路 1518 弄',zip: 200333}]}},methods: {},mounted() {}})
</script></html>
單選
@current-change=“handleCurrentChange”
在了解之前我們先來學習@current-change="handleCurrentChange"方法
這個方法用于監聽用戶點擊了表格的哪一行數據
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>單選</title><!-- 引入Element樣式 --><link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
</head><style></style><body><div id="app"><!-- current-change事件來管理選中時觸發的事件,它會傳入currentRow,oldCurrentRow。 --><el-table ref="singleTable" :data="tableData" @current-change="handleCurrentChange"style="width: 50%"><!-- 如果需要顯示索引,可以增加一列el-table-column,設置type屬性為index即可顯示從 1 開始的索引號 --><el-table-column type="index" width="50"></el-table-column><el-table-column property="date" label="日期" width="120"></el-table-column><el-table-column property="name" label="姓名" width="120"></el-table-column><el-table-column property="address" label="地址"></el-table-column></el-table></div></body>
<!-- 引入Vue2語法 -->
<script src="https://cdn.jsdelivr.net/npm/vue@2.7.16"></script>
<!-- 引入Element組件庫 -->
<script src="https://unpkg.com/element-ui/lib/index.js"></script><script>new Vue({el: '#app',data() {return {tableData: [{date: '2016-05-02',name: '王小虎1',address: '上海市普陀區金沙江路 1518 弄'}, {date: '2016-05-04',name: '王小虎2',address: '上海市普陀區金沙江路 1517 弄'}, {date: '2016-05-01',name: '王小虎3',address: '上海市普陀區金沙江路 1519 弄'}, {date: '2016-05-03',name: '王小虎4',address: '上海市普陀區金沙江路 1516 弄'}]}},methods: {handleCurrentChange(currentRow, oldCurrentRow) {console.log("當前行",currentRow);// 當前點擊的行數據console.log("上一次點擊的行",oldCurrentRow);// 上一次點擊的行數據}}})
</script></html>
鼠標點擊哪一行哪一行變色highlight-current-row
highlight-current-row 是否要高亮當前行 boolean — false
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>單選</title><!-- 引入Element樣式 --><link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
</head><style></style><body><div id="app"><!-- Table 組件提供了單選的支持,只需要配置highlight-current-row屬性即可實現單選。--><el-table ref="singleTable" :data="tableData" highlight-current-row@current-change="handleCurrentChange"style="width: 50%"><!-- 如果需要顯示索引,可以增加一列el-table-column,設置type屬性為index即可顯示從 1 開始的索引號 --><el-table-column type="index" width="50"></el-table-column><el-table-column property="date" label="日期" width="120"></el-table-column><el-table-column property="name" label="姓名" width="120"></el-table-column><el-table-column property="address" label="地址"></el-table-column></el-table></div></body>
<!-- 引入Vue2語法 -->
<script src="https://cdn.jsdelivr.net/npm/vue@2.7.16"></script>
<!-- 引入Element組件庫 -->
<script src="https://unpkg.com/element-ui/lib/index.js"></script><script>new Vue({el: '#app',data() {return {tableData: [{date: '2016-05-02',name: '王小虎1',address: '上海市普陀區金沙江路 1518 弄'}, {date: '2016-05-04',name: '王小虎2',address: '上海市普陀區金沙江路 1517 弄'}, {date: '2016-05-01',name: '王小虎3',address: '上海市普陀區金沙江路 1519 弄'}, {date: '2016-05-03',name: '王小虎4',address: '上海市普陀區金沙江路 1516 弄'}],}},methods: {handleCurrentChange(currentRow, oldCurrentRow) {console.log("當前行",currentRow);// 當前點擊的行數據console.log("上一次點擊的行"+oldCurrentRow);// 上一次點擊的行數據}}})
</script></html>
用于單選表格setCurrentRow
方法:setCurrentRow
作用:用于單選表格,設定某一行為選中行,如果調用時不加參數,則會取消目前高亮行的選中狀態。
傳參:row
條件:需要和highlight-current-row搭配使用
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>單選</title><!-- 引入Element樣式 --><link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
</head><style></style><body><div id="app"><!-- Table 組件提供了單選的支持,只需要配置highlight-current-row屬性即可實現單選。--><el-table ref="singleTable" :data="tableData" highlight-current-row@current-change="handleCurrentChange"style="width: 50%"><!-- 如果需要顯示索引,可以增加一列el-table-column,設置type屬性為index即可顯示從 1 開始的索引號 --><el-table-column type="index" width="50"></el-table-column><el-table-column property="date" label="日期" width="120"></el-table-column><el-table-column property="name" label="姓名" width="120"></el-table-column><el-table-column property="address" label="地址"></el-table-column></el-table><div style="margin-top: 20px"><el-button @click="selectTwo(tableData[1])">選中第二行</el-button><el-button @click="selectTwo()">取消選擇</el-button></div></div></body><script src="https://cdn.jsdelivr.net/npm/vue@2.7.16"></script>
<script src="https://unpkg.com/element-ui/lib/index.js"></script><script>new Vue({el: '#app',data() {return {tableData: [{date: '2016-05-02',name: '王小虎1',address: '上海市普陀區金沙江路 1518 弄'}, {date: '2016-05-04',name: '王小虎2',address: '上海市普陀區金沙江路 1517 弄'}, {date: '2016-05-01',name: '王小虎3',address: '上海市普陀區金沙江路 1519 弄'}, {date: '2016-05-03',name: '王小虎4',address: '上海市普陀區金沙江路 1516 弄'}],currentRow: null}},methods: {selectTwo(currentRow) {// 使用this.$refs.singleTable.setCurrentRow(currentRow);},}})
</script></html>
綜合使用
點擊按鈕選中,并選中把第二行數據存起來,
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>單選</title><!-- 引入Element樣式 --><link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
</head><style></style><body><div id="app"><!-- Table 組件提供了單選的支持,只需要配置highlight-current-row屬性即可實現單選。之后由current-change事件來管理選中時觸發的事件,它會傳入currentRow,oldCurrentRow。--><el-table ref="singleTable" :data="tableData" highlight-current-row@current-change="handleCurrentChange"style="width: 50%"><!-- 如果需要顯示索引,可以增加一列el-table-column,設置type屬性為index即可顯示從 1 開始的索引號 --><el-table-column type="index" width="50"></el-table-column><el-table-column property="date" label="日期" width="120"></el-table-column><el-table-column property="name" label="姓名" width="120"></el-table-column><el-table-column property="address" label="地址"></el-table-column></el-table><div style="margin-top: 20px"><el-button @click="selectTwo(tableData[1])">選中第二行</el-button><el-button @click="selectTwo()">取消選擇</el-button></div></div></body>
<!-- 引入Vue2語法 -->
<script src="https://cdn.jsdelivr.net/npm/vue@2.7.16"></script>
<!-- 引入Element組件庫 -->
<script src="https://unpkg.com/element-ui/lib/index.js"></script><script>new Vue({el: '#app',data() {return {tableData: [{date: '2016-05-02',name: '王小虎1',address: '上海市普陀區金沙江路 1518 弄'}, {date: '2016-05-04',name: '王小虎2',address: '上海市普陀區金沙江路 1517 弄'}, {date: '2016-05-01',name: '王小虎3',address: '上海市普陀區金沙江路 1519 弄'}, {date: '2016-05-03',name: '王小虎4',address: '上海市普陀區金沙江路 1516 弄'}],currentRow: null}},methods: {selectTwo(currentRow) {// 設置當前行this.$refs.singleTable.setCurrentRow(currentRow);},// a:當前行 b:上一次行handleCurrentChange(a, b) {// 當selectTwo被點擊,執行this.$refs.singleTable.setCurrentRow(currentRow);時// 會觸發本函數handleCurrentChange// 把值存起來便于后續操作this.currentRow = a;console.log(this.currentRow);}}})
</script></html>
多選
顯示不全提示屬性tooltip-effect
提示屬性:tooltip-effect
取值:dark/light
觸發場景:只有內容過被隱藏時,鼠標放到被隱藏的內容上面才會觸發,必須配合show-overflow-tooltip才會生效。
show-overflow-tooltip
作用:當內容過長被隱藏時顯示 tooltip
show-overflow-tooltip值類型:Boolean
<el-table :data="tableData" tooltip-effect="dark" style="width: 30%">......<el-table-column prop="address" label="地址"show-overflow-tooltip></el-table-column>
</el-table>
多選屬性 type=“selection”
表格事件selection-change
作用:當選擇項發生變化時會觸發該事件
參數:被選擇的數據數組
使用:
<div id="app"><el-table ref="multipleTable" :data="tableData" tooltip-effect="dark" style="width: 30%"@selection-change="handleSelectionChange">.....</el-table>
</div><script>new Vue({el: '#app',data() { },methods: {handleSelectionChange(val) {this.multipleSelection = val;}}})
</script>
表格方法:clearSelection
作用:用于多選表格,清空用戶的選擇
參數:無
使用:this.$refs.multipleTable.clearSelection();
表格方法:toggleRowSelection
作用:用于多選表格,切換某一行的選中狀態,如果使用了第二個參數,則是設置這一行選中與否(selected 為 true 則選中)
參數:row, selected
使用:this.$refs.multipleTable.clearSelection(row [,selected]);
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>多選</title><!-- 引入Element樣式 --><link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
</head><style></style><body><div id="app"><!-- @selection-change="handleSelectionChange"當選擇項發生變化時會觸發該事件 --><el-table ref="multipleTable" :data="tableData" tooltip-effect="dark" style="width: 30%"@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><div style="margin-top: 20px"><!-- 點擊選中第二、三條數據 --><el-button @click="toggleSelection([tableData[1], tableData[2]])">切換第二、第三行的選中狀態</el-button><!-- 取消選擇的第二、三條數據 --><el-button @click="toggleSelection()">取消選擇</el-button></div></div></body>
<!-- 引入Vue2語法 -->
<script src="https://cdn.jsdelivr.net/npm/vue@2.7.16"></script>
<!-- 引入Element組件庫 -->
<script src="https://unpkg.com/element-ui/lib/index.js"></script><script>new Vue({el: '#app',data() {return {tableData: [{date: '2016-05-03',name: '王小虎',address: '上海市普陀區金沙江路 1518 弄'}, {date: '2016-05-02',name: '王小虎',address: '上海市普陀區金沙江路 1518 弄'}, {date: '2016-05-04',name: '王小虎',address: '上海市普陀區金沙江路 1518 弄'}, {date: '2016-05-01',name: '王小虎',address: '上海市普陀區金沙江路 1518 弄'}, {date: '2016-05-08',name: '王小虎',address: '上海市普陀區金沙江路 1518 弄'}, {date: '2016-05-06',name: '王小虎',address: '上海市普陀區金沙江路 1518 弄'}, {date: '2016-05-07',name: '王小虎',address: '上海市普陀區金沙江路 1518 弄'}],multipleSelection: []}},methods: {toggleSelection(rows) {console.log(rows);if (rows) {rows.forEach(row => {// 此方法是把傳入的行數據 選中this.$refs.multipleTable.toggleRowSelection(row);});} else {// 當沒有傳值,即取消選擇:rows==undefined 清空選項this.$refs.multipleTable.clearSelection();}},handleSelectionChange(val) {console.log(val);// val為當前選中行的數據this.multipleSelection = val;}}})
</script></html>
排序
對表格進行排序,可快速查找或對比數據。