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 相关文章推荐
轻轻松松学JS调试(不下载任何工具)
Apr 14 Javascript
基于jQuery的仿flash的广告轮播
Nov 05 Javascript
基于jquery的关于动态创建DOM元素的问题
Dec 24 Javascript
探讨JavaScript中声明全局变量三种方式的异同
Dec 03 Javascript
JavaScript错误处理
Feb 03 Javascript
正则 js分转元带千分符号详解
Mar 08 Javascript
Vue.js学习笔记之常用模板语法详解
Jul 25 Javascript
浅谈JS 数字和字符串之间相互转化的纠纷
Oct 20 Javascript
详解组件库的webpack构建速度优化
Jun 18 Javascript
微信小程序开发之路由切换页面重定向问题
Sep 18 Javascript
详解Vue.js中引入图片路径的几种方式
Jun 17 Javascript
Vue实现菜单切换功能
Nov 08 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
Thinkphp将二维数组变为标签适用的一维数组方法总结
2014/10/30 PHP
Laravel 4 初级教程之安装及入门
2014/10/30 PHP
smarty自定义函数htmlcheckboxes用法实例
2015/01/22 PHP
简单实现php上传文件功能
2017/09/21 PHP
PHP通过调用新浪API生成t.cn格式短网址链接的方法详解
2019/02/20 PHP
JavaScript 编程引入命名空间的方法
2007/06/29 Javascript
javascript获取函数名称、函数参数、对象属性名称的代码实例
2014/04/12 Javascript
javascript实现的一个随机点名功能
2014/08/26 Javascript
js贪吃蛇网页版游戏特效代码分享(挑战十关)
2015/08/24 Javascript
完善的jquery处理机制
2016/02/21 Javascript
深入分析javascript中console命令
2016/08/14 Javascript
微信小程序 教程之列表渲染
2016/10/18 Javascript
Angular.js中用ng-repeat-start实现自定义显示
2016/10/18 Javascript
JS实现随机颜色的3种方法与颜色格式的转化
2017/01/05 Javascript
浅谈 Vue v-model指令的实现原理
2017/06/08 Javascript
用js将long型数据转换成date型或datetime型的实例
2017/07/03 Javascript
angular.js4使用 RxJS 处理多个 Http 请求
2017/09/23 Javascript
利用Three.js如何实现阴影效果实例代码
2017/09/26 Javascript
React Native自定义控件底部抽屉菜单的示例
2018/02/08 Javascript
利用js实现前后台传送Json的示例代码
2018/03/29 Javascript
详解vue中组件参数
2018/07/09 Javascript
原来JS还可以这样拆箱转换详解
2019/02/01 Javascript
详解基于Vue的支持数据双向绑定的select组件
2019/09/02 Javascript
Python的Django框架安装全攻略
2015/07/15 Python
python基础练习之几个简单的游戏
2017/11/10 Python
Python3实现发送QQ邮件功能(html)
2017/12/15 Python
每天迁移MySQL历史数据到历史库Python脚本
2018/04/13 Python
Python2与Python3的区别实例分析
2019/04/11 Python
基于python中__add__函数的用法
2019/11/25 Python
python3连接MySQL8.0的两种方式
2020/02/17 Python
发现两个有趣的CSS3动画效果
2013/08/14 HTML / CSS
新加坡网上花店:FlowerAdvisor新加坡
2018/10/05 全球购物
Net Remoting把服务器端激活两种模式
2014/01/22 面试题
八项规定整改方案
2014/02/21 职场文书
产品包装策划方案
2014/05/18 职场文书
MySql重置root密码 --skip-grant-tables
2022/04/11 MySQL