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 相关文章推荐
json格式化/压缩工具 Chrome插件扩展版
May 25 Javascript
JS实现self的resend
Jul 22 Javascript
in.js 一个轻量级的JavaScript颗粒化模块加载和依赖关系管理解决方案
Jul 26 Javascript
常用js字符串判断方法整理
Oct 18 Javascript
javascript实现动态加载CSS
Jan 26 Javascript
jQuery根据元素值删除数组元素的方法
Jun 24 Javascript
IE浏览器下PNG相关功能
Jul 05 Javascript
javascript实现3D切换焦点图
Oct 16 Javascript
JS和jQuery通过this获取html标签中的属性值(实例代码)
Sep 11 jQuery
vue中使用element ui的弹窗与echarts之间的问题详解
Oct 25 Javascript
vue 实现单选框设置默认选中值
Nov 07 Javascript
vue-resource post数据时碰到Django csrf问题的解决
Mar 13 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 面向对象之成员方法详解
2013/05/04 PHP
PHP中PDO连接数据库中各种DNS设置方法小结
2016/05/13 PHP
PHP微信公众号自动发送红包API
2016/06/01 PHP
php 7新特性之类型申明详解
2017/06/06 PHP
PHP排序算法之堆排序(Heap Sort)实例详解
2018/04/21 PHP
win10下 php安装seaslog扩展的详细步骤
2020/12/04 PHP
JavaScript 常用函数
2009/12/30 Javascript
jQuery对val和atrr(&quot;value&quot;)赋值的区别介绍
2014/09/26 Javascript
jquery对象和DOM对象的任意相互转换
2016/02/21 Javascript
JS设置时间无效问题的解决办法
2017/02/18 Javascript
JavaScript中使用webuploader实现上传视频功能(demo)
2017/04/10 Javascript
nodejs操作mysql实现增删改查的实例
2017/05/28 NodeJs
JavaScript比较同一天的时间大小实例代码
2018/02/09 Javascript
Vue-input框checkbox强制刷新问题
2019/04/18 Javascript
JS实现继承的几种常用方式示例
2019/06/22 Javascript
ES5新增数组的实现方法
2020/05/12 Javascript
antd的select下拉框因为数据量太大造成卡顿的解决方式
2020/10/31 Javascript
python中字符串比较使用is、==和cmp()总结
2018/03/18 Python
Django {{ MEDIA_URL }}无法显示图片的解决方式
2020/04/07 Python
使用Jupyter notebooks上传文件夹或大量数据到服务器
2020/04/14 Python
python中导入 train_test_split提示错误的解决
2020/06/19 Python
解决pycharm不能自动保存在远程linux中的问题
2021/02/06 Python
英国计算机商店:Technextday
2019/12/28 全球购物
英国第一职业高尔夫商店:Clickgolf.co.uk
2020/11/18 全球购物
到底Java是如何传递参数的?是by value或by reference?
2012/07/13 面试题
经典c++面试题五
2014/12/17 面试题
总经理职责
2013/12/22 职场文书
社会稳定风险评估方案
2014/06/02 职场文书
工作经常出错的检讨书
2014/09/13 职场文书
销售2014年度工作总结
2014/12/08 职场文书
商务考察邀请函模板
2015/02/02 职场文书
2015年实习单位评语
2015/03/25 职场文书
2015年仓管员工作总结
2015/04/21 职场文书
《鸟的天堂》教学反思
2016/02/19 职场文书
2016年感恩节活动总结大全
2016/04/01 职场文书
MySQL学习总结-基础架构概述
2021/04/05 MySQL