根据JSON对象动态加载表格--大数据量

EasyUI的DataGrid加载数据的时候,如果列数过多(300列以上),数据渲染及其缓慢。

JSON对象格式:

1:rowno

2:title

3:colspan

4:rowspan

5:backgroundcolor

五项属性必须设置

ar json={total:3,rows:[{‘rowno‘:1,‘title‘:‘ceshi‘,‘colspan‘:1,rowspan:1,‘backgroundcolor‘:‘red‘},{‘rowno‘:1,‘title‘:‘ceshi1‘,‘colspan‘:1,rowspan:1,‘backgroundcolor‘:‘red‘},{‘rowno‘:1,‘title‘:‘ceshi2‘,‘colspan‘:1,‘rowspan‘:1,‘backgroundcolor‘:‘red‘}]};

原生态利用datatable循环加载标签

<html>
   <head>
    <title>test page</title>
    <script type=‘text/javascript‘>
      <!--
    function createTable() {
        var t = document.createElement(‘table‘);
        for (var i = 0; i < 2000; i++) {
         var r = t.insertRow();
         for (var j = 0; j < 5; j++) {
          var c = r.insertCell();
          c.innerHTML = i + ‘,‘ + j;
         }
        }

        document.getElementById(‘table1‘).appendChild(t);
       t.setAttribute(‘border‘, ‘1‘);
    }

    function createTable2() {
        var t = document.createElement(‘table‘);
        var b = document.createElement(‘tbody‘);
        for (var i = 0; i < 2000; i++) {
         var r = document.createElement(‘tr‘);
         for (var j = 0; j < 5; j++) {
          var c = document.createElement(‘td‘);
          var m = document.createTextNode(i + ‘,‘ + j);
          c.appendChild(m);
          r.appendChild(c);
         }
         b.appendChild(r);
        }

        t.appendChild(b);
        document.getElementById(‘table1‘).appendChild(t);
       t.setAttribute(‘border‘, ‘1‘);
    }

    function createTable3() {
     var data = ‘‘;

     data += ‘<table border=1><tbody>‘;
        for (var i = 0; i < 2000; i++) {
         data += ‘<tr>‘;
         for (var j = 0; j < 5; j++) {
          data += ‘<td>‘ + i + ‘,‘ + j + ‘</td>‘;
         }
         data += ‘</tr>‘;
        }
        data += ‘</tbody><table>‘;

        document.getElementById(‘table1‘).innerHTML = data;
    }
   function createTable4() {
     var data = new Array();

     data.push(‘<table border=1><tbody>‘);
        for (var i = 0; i < 2000; i++) {
         data.push(‘<tr>‘);
         for (var j = 0; j < 5; j++) {
          data.push(‘<td>‘ + i + ‘,‘ + j + ‘</td>‘);
         }
         data.push(‘</tr>‘);
        }
        data.push(‘</tbody><table>‘);

        document.getElementById(‘table1‘).innerHTML = data.join(‘‘);
    }
    function createJSONObject(){
      var jsonObj={total:3,rows:[]};
      for(var i=1;i<100;i++){
        for(var j=1;j<1440;j++){
          var cell={‘rowno‘:i,‘title‘:‘ceshi‘+j,‘colspan‘:1,‘rowspan‘:1,‘backgroundcolor‘:‘red‘};
          jsonObj.rows.push(cell);
        }
      }
      return jsonObj;
    }
    function createTableByJSON(){
      //var json={total:3,rows:[{‘rowno‘:1,‘title‘:‘ceshi‘,‘colspan‘:1,rowspan:1,‘backgroundcolor‘:‘red‘},{‘rowno‘:1,‘title‘:‘ceshi1‘,‘colspan‘:1,rowspan:1,‘backgroundcolor‘:‘red‘},{‘rowno‘:1,‘title‘:‘ceshi2‘,‘colspan‘:1,‘rowspan‘:1,‘backgroundcolor‘:‘red‘}]};
      alert("test");
      var json=createJSONObject();
      alert("test1");
      alert(json.rows.length);
      alert(json.rows[2876].title);
      var htmls=[];
      for(var i=0;i<json.rows.length;i++)
      {
        //alert(json.rows[i].title);
        if(i==0)
        {
          var cell =appendRowFirstCell(json.rows[i]);
          htmls.push(cell.join(‘‘));
        }
        else if(i==json.rows.length-1)
        {
          var cell=appendRowLastCell(json.rows[i]);
          htmls.push(cell.join(‘‘));
        }
        else
        {
          var cell;
          var cellPre=json.rows[i-1];
          var cellCurrent=json.rows[i];
          var cellNext=json.rows[i+1];
          if(cellCurrent.rowno!=cellPre.rowno)
          {
            cell=appendRowFirstCell(cellCurrent);
            htmls.push(cell.join(‘‘));
          }
          else if(cellCurrent.rowno!=cellNext.rowno)
          {
            cell=appendRowLastCell(cellCurrent);
            htmls.push(cell.join(‘‘));
          }
          else
          {
            cell=appendRowMiddleCell(cellCurrent);
            htmls.push(cell.join(‘‘));
          }
        }
      }
      htmls.push();
      document.getElementById(‘tabledy‘).innerHTML=htmls.join(‘‘);
    };

    function appendRowFirstCell(jsonCell){
      var firstCell=[];
      if(typeof jsonCell!="undefined"){
        firstCell.push(‘<tr><td colspan=‘+jsonCell.colspan +‘ rowspan=‘ + jsonCell.rowspan + ‘ style="background-color:‘ + jsonCell.backgroundcolor+‘">‘ +jsonCell.title+‘</td>‘);
      }
      return firstCell;
    };
    function appendRowMiddleCell(jsonCell){
      var middleCell=[];
      if(typeof jsonCell!="undefined"){
        middleCell.push(‘<td colspan=‘+jsonCell.colspan +‘ rowspan=‘ + jsonCell.rowspan + ‘ style="background-color:‘ + jsonCell.backgroundcolor+‘">‘ +jsonCell.title+‘</td>‘);
      }
      return middleCell;
    };

    function appendRowLastCell(jsonCell){
      var lastCell=[];
      if(typeof jsonCell!="undefined"){
        lastCell.push(‘<td colspan=‘+jsonCell.colspan +‘ rowspan=‘ + jsonCell.rowspan + ‘ style="background-color:‘ + jsonCell.backgroundcolor+‘">‘ +jsonCell.title+‘</td></tr>‘);
        //lastCell.push(‘‘);
      }
      return lastCell;
    };

   function showFunctionRunTime(f) {
     var t1 = new Date();
     f();
     var t2 = new Date();
     alert(t2 - t1);
    }
      //-->
    </script>
   </head>
  <body>
   <input type="button" value="Click Me" onclick="createTableByJSON();">
   <div id="table1" style="border: 1px solid black">
   </div>
   <table id="tabledy" style="border: 1px solid black">
   </table>

  <script>
    //showFunctionRunTime(createTable);
    //showFunctionRunTime(createTable2);
    //showFunctionRunTime(createTable3);
    //showFunctionRunTime(createTable4);
   </script>
  </body>
 </html> 
时间: 2024-10-27 12:25:36

根据JSON对象动态加载表格--大数据量的相关文章

如何用easyui动态加载表格标题

在最近做的项目中涉及到了需要加载大量表格的功能,采用了easyui的datagrid,但是发现datdagrid表格标题需要手动写,这在表格多的情况是一件很麻烦的事情.经过了long long time 终于研究出来了动态加载表格标题的方法. 首先给下效果图. 刚开始本人用easyui最原始的方式将表格放入我需要它放置的位置.整体页面因为某些原因呢就不展示给大家看了. 首先大家可以去网上下载easyui的包以及easyui的中文文档.easyui包友情链接:http://www.jeasyui.

动态加载表格数据(自定义)

<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title></title> <style> tr>td{ width: 100px; border: 1px solid red; } </style></head><body><ul id="boxU

动态加载上下滚动数据列表(小程序开发)

实现如上图所示的内容,利用微信小程序自带的swiper标签,设置垂直滚动,原理就是这么简单,但是,如果需要动态加载数据呢? <view class='flex news'> <view class='news-left'>头条</view> <swiper class='news-right' vertical="true" autoplay="true" interval="3000" circular

vue:使用不同参数跳转同一组件,实现动态加载图片和数据,以及利用localStorage和vuex持久化数据

需求:通过不同的参数复用同一组件,实现动态加载数据和图片,同时,在页面刷新时,图片依旧可以加载成功. 过程出现的bug和问题: 1.使用params传参后,再次刷新页面,参数丢失导致数据无法再次加载 2.改用query进行传参后,页面刷新后图片无法加载,这是由于图片的url是在created钩子函数调用查询数据api后才进行赋值,而赋值之后页面已经渲染完成,导致图片无法加载成功 解决方案: 1.通过localStorage将数据持久化,在跳转到当前路由时,先使用localStorage将数据持久

项目总结—jQuery EasyUI-DataGrid动态加载表头

http://blog.csdn.net/zwk626542417/article/details/19248747 概要 在前面两篇文章中,我们已经介绍了在jQuery EasyUI-DataGrid中有参数和无参数的情况下将数据库中数据显示到前台,但是对于前面两篇文章显示的数据表头是固定的,如果我们显示到前台的数据来自数据库不同的表,那么表头也需要动态的加载,这篇文章我们就来看下在EasyUI-DataGrid中动态加载表头和数据. 实现 我们要实现的功能是根据我们的需要,让DataGrid

在页面中使用拼接字符串的方式显示动态加载的数据

在做页面的时候为了使页面美化,我们经常会用拼接字符串的方式,动态加载后台的数据,这里我们使用的前台框架是bootstrap,但是很多效果还是要用jquery来实现 (1)方法传参与字符串的拼接  (拼接用的replace) 先声明一个展示数据的页面模型(使用过的模型1) var userModel = "<div class=\"itemdiv commentdiv\" style=\"margin-left: 7%;\">"+ &q

js 动态加载事件的几种方法总结

本篇文章主要是对js 动态加载事件的几种方法进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助 有些时候需要动态加载javascript事件的一些方法往往我们需要在 JS 中动态添加事件,这就涉及到浏览器兼容性问题了,以下谈及的几种方法,我们也常常混合使用. 方法一.setAttributevar obj = document.getElementById("obj");obj.setAttribute("onclick", "javasc

jQuery EasyUI-DataGrid动态加载表头

项目总结—jQuery EasyUI-DataGrid动态加载表头 目录(?)[-] 概要 实现 总结 概要 在前面两篇文章中,我们已经介绍了在jQuery EasyUI-DataGrid中有参数和无参数的情况下将数据库中数据显示到前台,但是对于前面两篇文章显示的数据表头是固定的,如果我们显示到前台的数据来自数据库不同的表,那么表头也需要动态的加载,这篇文章我们就来看下在EasyUI-DataGrid中动态加载表头和数据. 实现 我们要实现的功能是根据我们的需要,让DataGrid显示不同的数据

[转]bootstrap的table插件动态加载表头

原文地址:https://blog.csdn.net/abubu123/article/details/78060321 bootstrap的table属性已经很熟悉了,最近遇到一个问题,犹豫每个列表加载的数据需求不同,所以需要动态的更换表头. 网上有很多加载表格数据的例子,但是却没有找到如何动态加载表格,再加在数据. 虽然可以一个表格加载一种数据,但是本着学习的态度尝试了下这种方式,结果发现是可以执行的.分享下思路和实现过程,以备日后使用. 思路: 1.写接口,查询出要展示的列.注意接口中必须