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框架设计读书笔记之字符串的扩展和修复
Dec 02 Javascript
js实现简单的省市县三级联动效果实例
Feb 18 Javascript
javascript日期比较方法实例分析
Jun 17 Javascript
jQuery实现查找最近父节点的方法
Jun 23 Javascript
canvas基础绘制-绚丽倒计时的实例
Sep 17 Javascript
Parcel 打包示例(React HelloWorld)
Jan 16 Javascript
vue组件中使用props传递数据的实例详解
Apr 08 Javascript
Vue实现底部侧边工具栏的实例代码
Sep 03 Javascript
jQuery选择器之基本过滤选择器用法实例分析
Feb 19 jQuery
详解js根据百度地图提供经纬度计算两点距离
May 13 Javascript
几款主流好用的富文本编辑器(所见即所得常用编辑器)介绍
Mar 17 Javascript
深入讲解Vue中父子组件通信与事件触发
Mar 22 Vue.js
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
PHP7.1方括号数组符号多值复制及指定键值赋值用法分析
2016/09/26 PHP
php使用curl获取header检测开启GZip压缩的方法
2018/08/15 PHP
PHP模型Model类封装数据库操作示例
2019/03/14 PHP
TP5框架实现自定义分页样式的方法示例
2020/04/05 PHP
JavaScrip单线程引擎工作原理分析
2010/09/04 Javascript
JS面向对象编程浅析
2011/08/28 Javascript
查看源码的工具 学习jQuery源码不错的工具
2011/12/26 Javascript
深入理解JavaScript系列(10) JavaScript核心(晋级高手必读篇)
2012/01/15 Javascript
jquery检测input checked 控件是否被选中的方法
2014/03/26 Javascript
div失去焦点事件实现思路
2014/04/22 Javascript
JavaScript立即执行函数的三种不同写法
2014/09/05 Javascript
JS实现的左侧竖向滑动菜单效果代码
2015/10/19 Javascript
vue2.0实现导航菜单切换效果
2017/05/08 Javascript
React Native 截屏组件的示例代码
2017/12/06 Javascript
angular1配合gulp和bower的使用教程
2018/01/19 Javascript
nvm、nrm、npm 安装和使用详解(小结)
2019/01/17 Javascript
史上最为详细的javascript继承(推荐)
2019/05/18 Javascript
vue实现移动端H5数字键盘组件使用详解
2020/08/25 Javascript
原生js实现九宫格拖拽换位
2021/01/26 Javascript
浅谈Python中的闭包
2015/07/08 Python
定制FileField中的上传文件名称实例
2017/08/23 Python
Python实现将MySQL数据库表中的数据导出生成csv格式文件的方法
2018/01/11 Python
对numpy中布尔型数组的处理方法详解
2018/04/17 Python
Python爬虫之pandas基本安装与使用方法示例
2018/08/08 Python
Python基础之字符串操作常用函数集合
2020/02/09 Python
Python实现动态循环输出文字功能
2020/05/07 Python
利用纯CSS3实现tab选项卡切换示例代码
2016/09/21 HTML / CSS
Baracuta官方网站:Harrington夹克,G9,G4,G10等
2018/03/06 全球购物
adidas瑞典官方网站:购买阿迪达斯鞋子和运动服
2019/12/11 全球购物
宏碁西班牙官网:Acer西班牙
2021/01/08 全球购物
华三通信H3C面试题
2015/05/15 面试题
中医药大学毕业生自荐信
2013/11/08 职场文书
三峡大坝导游词
2015/01/31 职场文书
2015年话务员工作总结
2015/04/29 职场文书
少年雷锋观后感
2015/06/10 职场文书
SQLServer 日期函数大全(小结)
2021/04/08 SQL Server