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 相关文章推荐
JavaScript面象对象设计
Apr 28 Javascript
给jQuery方法添加回调函数一款插件的应用
Jan 21 Javascript
JavaScript实现梯形乘法表的方法
Apr 25 Javascript
浅谈jQuery页面的滚动位置scrollTop、scrollLeft
May 19 Javascript
JavaScript中的对象与JSON
Jul 03 Javascript
AngularJS基础 ng-cut 指令介绍及简单示例
Aug 01 Javascript
bootstrap的工具提示实例代码
May 17 Javascript
Bootstrap 表单验证formValidation 实现表单动态验证功能
May 17 Javascript
vue.js配合$.post从后台获取数据简单demo分享
Aug 11 Javascript
彻底揭秘keep-alive原理(小结)
May 05 Javascript
React 全自动数据表格组件——BodeGrid的实现思路
Jun 12 Javascript
antd-日历组件,前后禁止选择,只能选中间一部分的实例
Oct 29 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 5.0对象模型深度探索之绑定
2006/09/05 PHP
Session服务器配置指南与使用经验的深入解析
2013/06/17 PHP
详解ThinkPHP3.2.3验证码显示、刷新、校验
2016/12/29 PHP
javascript与CSS复习(三)
2010/06/29 Javascript
使用javascript实现页面定时跳转总结篇
2013/09/21 Javascript
JS中实现replaceAll的方法(实例代码)
2013/11/12 Javascript
javascript 动态创建表格的2种方法总结
2015/03/04 Javascript
JavaScript类继承及实例化的方法
2015/07/25 Javascript
js下将金额数字每三位一逗号分隔
2016/02/19 Javascript
js 模仿锚点定位的实现方法
2016/11/19 Javascript
nodejs入门教程六:express模块用法示例
2017/04/24 NodeJs
使用vue官方提供的模板vue-cli搭建一个helloWorld案例分析
2018/01/16 Javascript
微信小程序实现点击按钮后修改颜色
2019/12/05 Javascript
Vue 组件复用多次自定义参数操作
2020/07/27 Javascript
linux下python抓屏实现方法
2015/05/22 Python
python中私有函数调用方法解密
2016/04/29 Python
pandas中去除指定字符的实例
2018/05/18 Python
django和vue实现数据交互的方法
2019/08/21 Python
Python API 操作Hadoop hdfs详解
2020/06/06 Python
python实现图书馆抢座(自动预约)功能的示例代码
2020/09/29 Python
美国高档帽子网上商店:Hats.com
2018/08/09 全球购物
Prototype如何更新局部页面
2013/03/03 面试题
我的五年职业生涯规划
2014/01/23 职场文书
医校毕业生自我鉴定
2014/01/25 职场文书
网上快餐厅创业计划书
2014/02/01 职场文书
创先争优活动方案
2014/02/12 职场文书
党的群众路线教育实践活动宣传方案
2014/02/23 职场文书
人力资源总监工作说明
2014/03/03 职场文书
党员批评与自我批评思想汇报(集锦)
2014/09/14 职场文书
市场总监岗位职责
2015/02/11 职场文书
公路施工安全责任书
2015/05/08 职场文书
2015年大学辅导员工作总结
2015/05/12 职场文书
红色电影观后感
2015/06/18 职场文书
比较node.js和Deno
2021/04/27 Javascript
Python 如何解决稀疏矩阵运算
2021/05/26 Python
Java面试题冲刺第十九天--数据库(4)
2021/08/07 Java/Android