elementUI 动态生成几行几列的方法示例


Posted in Javascript onJuly 11, 2019

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 :cell-style="cellStyle">
   <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" >
     <template slot-scope="scope">
      <el-button @click="handleClick(scope.row, col.id, scope.$index)" class="el-icon-cherry" v-bind:style="{ color: activeColor}">></el-button>
     </template>
    </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,

    activeColor: 'green',

    colPos: '',
    rowPos: '',



    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;
    }
   },

   handleClick(row, col, index) {
    // console.log(JSON.stringify(row));
    // console.log(JSON.stringify(col));
    // console.log("点击的cell 行数: " + JSON.stringify(index)); // index 是 行数,0 表示第一行,从 0 开始
    // 一点击获取 行纵坐标
    this.colPos = col;
    this.rowPos = index;
   },

   cellStyle({row, column, rowIndex, columnIndex}){
    // console.log(JSON.stringify(row))
    // console.log(JSON.stringify(column))
    // console.log("要渲染的行数: " + JSON.stringify(rowIndex))
    // console.log(JSON.stringify(columnIndex))

    if(rowIndex == 0 && columnIndex == 0){
     return '';
    }else {
     if(rowIndex == this.rowPos && columnIndex == this.colPos){ //指定坐标
      return 'background: pink';
     }else{
      return '';
     }
    }

   },

  }
 });
</script>
</body>
</html>

为了方便大家直接使用理解,我这里使用的脚本等都是在线链接,确保大家直接 down 下来就能运行处效果的。

效果图

elementUI 动态生成几行几列的方法示例

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery 学习笔记一
Apr 07 Javascript
一个js过滤空格的小函数
Oct 10 Javascript
JavaScript函数模式详解
Nov 07 Javascript
js实现的黑背景灰色二级导航菜单效果代码
Aug 24 Javascript
jquery获取复选框checkbox的值实现方法
May 30 Javascript
jQuery实现表格行和列的动态添加与删除方法【测试可用】
Aug 01 Javascript
EasyUI学习之DataGird分页显示数据
Dec 29 Javascript
JavaScript cookie详解及简单实例应用
Dec 31 Javascript
详解webpack分离css单独打包
Jun 21 Javascript
vue自定义filters过滤器
Apr 26 Javascript
JavaScript数组去重的几种方法
Apr 07 Javascript
javascript操作向表格中动态加载数据
Aug 27 Javascript
JS为什么说async/await是generator的语法糖详解
Jul 11 #Javascript
Vue 使用计时器实现跑马灯效果的实例代码
Jul 11 #Javascript
Vue 子组件与数据传递问题及注意事项
Jul 11 #Javascript
ES6的异步终极解决方案分享
Jul 11 #Javascript
微信小程序的开发范式BeautyWe.js入门详解
Jul 10 #Javascript
实现一个 Vue 吸顶锚点组件方法
Jul 10 #Javascript
vue webpack重写cookie路径的方法
Jul 10 #Javascript
You might like
PHP远程连接oracle数据库操作实现方法图文详解
2019/04/11 PHP
php新建文件的方法实例
2019/09/26 PHP
《JavaScript高级程序设计》阅读笔记(一) ECMAScript基础
2012/02/27 Javascript
解决javascript:window.close()在chrome,Firefox下失效的问题
2013/05/07 Javascript
图片上传判断及预览脚本的效果实例
2013/08/07 Javascript
Javascript 数组排序详解
2014/10/22 Javascript
node.js中的forEach()是同步还是异步呢
2015/01/29 Javascript
JavaScript定义全局对象的方法示例
2017/01/12 Javascript
ajax分页效果(bootstrap模态框)
2017/01/23 Javascript
原生js简单实现放大镜特效
2017/05/16 Javascript
详解vue2 $watch要注意的问题
2017/09/08 Javascript
详解vue.js移动端配置flexible.js及注意事项
2019/04/10 Javascript
微信小程序实现授权登录
2019/05/15 Javascript
细说Vue组件的服务器端渲染的过程
2019/05/30 Javascript
javascript面向对象三大特征之封装实例详解
2019/07/24 Javascript
Python 装饰器实现DRY(不重复代码)原则
2018/03/05 Python
Python利用splinter实现浏览器自动化操作方法
2018/05/11 Python
python创建文件时去掉非法字符的方法
2018/10/31 Python
Python socket模块实现的udp通信功能示例
2019/04/10 Python
python实现二级登陆菜单及安装过程
2019/06/21 Python
python机器学习包mlxtend的安装和配置详解
2019/08/21 Python
Python求解正态分布置信区间教程
2019/11/20 Python
马来西亚最好的婴儿商店:Motherhood
2017/09/14 全球购物
粉红色的鲸鱼:Vineyard Vines
2018/02/17 全球购物
世界上最全面的草药补充剂和顶级品牌维生素网站:HerbsPro
2019/01/20 全球购物
服务员岗位责任制
2014/02/11 职场文书
经理秘书求职自荐信范文
2014/03/23 职场文书
旅游安全协议书
2014/04/21 职场文书
人事任命书格式
2014/06/05 职场文书
四风对照检查剖析材料
2014/10/07 职场文书
学生会个人总结范文
2015/02/15 职场文书
2015年党员创先争优公开承诺书
2015/04/27 职场文书
思想工作总结范文
2015/08/12 职场文书
2016年圣诞节义工活动总结
2016/04/01 职场文书
HTML+JS实现在线朗读器
2022/02/15 Javascript
Meta增速拉垮,元宇宙难当重任
2022/04/29 数码科技