elementUI 動態生成幾行幾列 table
如今碰到一個需求:就是根據用戶選擇的行列,來自動生成相應大小的 table,以下這個實現還不完善,由於數據不對,只是實現了動態的效果,僅是提供一種實現思路吧,後續我會再想一想看怎麼實現爲好,先記錄一下吧
直接看代碼吧
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>elementUI table 動態生成列</title>
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
<script src="https://unpkg.com/element-ui/lib/index.js"></script>
<style type="text/css">
@import url("https://unpkg.com/element-ui/lib/theme-chalk/index.css");
</style>
</head>
<body>
<div id="app">
<el-form inline>
<!--先選擇 排數-->
<el-form-item label="請選擇排" style="margin-left: 50px;">
<el-select style="width: 100% ;" v-model="row1" placeholder="請選擇排" @change="row1Change">
<el-option v-for="item in floorNumList" :key="item.floorId"
:value="item.floorId"></el-option>
</el-select>
</el-form-item>
<!--再選擇 列數-->
<el-form-item label="請選擇列">
<el-select style="width: 100% ;" v-model="col1" placeholder="請選擇列" @change="col1Change">
<el-option v-for="item in floorNumList" :key="item.floorId"
:value="item.floorId"></el-option>
</el-select>
</el-form-item>
<el-table ref="multipleTable" :data="rowDataList1" style="width:80%; border: 2px solid red; max-height: 500px; margin-left: 30px;" highlight-current-row>
<el-table-column fixed type="selection" align="center" width="50" label="列"></el-table-column>
<el-table-column type="index" align="center" width="50" label="索引"></el-table-column>
<el-table-column v-for="col in colDataList1" :prop="col.id" :label="col.id" align="center" >
<el-table-column prop="id" align="center" ></el-table-column>
</el-table-column>
</el-table>
</el-form>
</div>
</div>
<script>
let vm = new Vue({
el: '#app',
data(){
return{
floorNumList: [
{floorId: 1},
{floorId: 2},
{floorId: 3},
{floorId: 4},
{floorId: 5},
{floorId: 6},
{floorId: 7},
{floorId: 8},
{floorId: 9},
{floorId: 10}
],
floorNum: '',
// 第1層 默認選擇的排數 和 列數
row1: 1,
col1: 1,
// 第2層 默認選擇的排數 和 列數
row2: 1,
col2: 1,
// 第3層 默認選擇的排數 和 列數
row3: 1,
col3: 1,
// 第4層 默認選擇的排數 和 列數
row4: 1,
col4: 1,
// 第5層 默認選擇的排數 和 列數
row5: 1,
col5: 1,
rowDataList1: [{ // 默認給一個對象,即默認狀態是 1行數據
id: Math.ceil(Math.random()*100)
}],
colDataList1: [
{id: '1列'}
],
}
},
methods:{
col1Change(){
// 每觸發一次,清空數據
this.colDataList1 = [{id: '1列'}];
// 取得 選中的第一層的第一排的數值
let len = this.col1;
if(len > 1){
for (let i = 2; i <= len; i++){
this.colDataList1.push({id: i + '列'});
}
return this.colDataList1;
}else{
return this.colDataList1;
}
},
row1Change(){
// 每觸發一次,清空數據
this.rowDataList1 = [{ id: Math.ceil(Math.random()*100)}];
let len = this.row1;
if (len > 1){
for (let i = 2; i <= len ; i++){
this.rowDataList1.push({id: Math.ceil(Math.random()*100) + i});
}
return this.rowDataList1;
}else {
return this.rowDataList1;
}
},
}
});
</script>
</body>
</html>
爲了方便你們直接使用理解,我這裏使用的腳本等都是在線連接,確保你們直接 down 下來就能運行處效果的。
效果圖
聲明
原創手敲不易,轉載請註明出處,謝謝。我是
拉丁小毛,歡迎你們關注我哦,一塊兒交流,共同進步。有問題能夠
郵我哦(util.you.com@gmail.com)