[ABI 5.1] 实现报表表格滚动

11664
8

tyy__think 小试身手Lv3

发表于2020-11-12 14:55

悬赏1

已解决

楼主
本帖最后由 tyy__think 于 2020-11-12 15:00 编辑

请问报表设计页面能否实现列表内容自循环滚动呢?

最近看过此主题的会员

esen_4TU4L1BV1N

fredfei

xyr

chenzy

pandabuxizao

esen_4XL2IVJCG8

esen_55I6HYQMKG

双眼皮爆炸熊

esen_3H03HK78MGNH

esen_50EOT2L3A3

esen_50RKP6LVCNHQ

最佳答案

xxxl

发表于2020-11-12 14:55

只看该作者

取消 关注该作者的回复

将需要滚动的表格放在容器中然后再客户端脚本中写以下代码


  1. /***
  2. **表格内容自动轮播脚本
  3. **@param tableDom内容滚动的表格,最好是表格的父DIV
  4. **@param visibleHeight 可视区的高度
  5. ***/
  6. function autoScrollTable(tableDom, visibleHeight) {
  7.     var marqueesHeight = visibleHeight;
  8.     var stopscroll = false;
  9.     var scrollElem = tableDom;
  10.         var freshScrollHeight = tableDom.firstElementChild.offsetHeight/4;
  11.     var preTop = 0;
  12.     var currentTop = 0;
  13.     var stoptime = 0;
  14.     with (scrollElem) {
  15.         style.height = parseFloat(marqueesHeight) + "px";
  16.         style.overflow = 'hidden';
  17.         noWrap = true;
  18.     }
  19.     var scrollUp = function () {
  20.         if (stopscroll) {
  21.             setTimeout(scrollUp, 50);
  22.             return;
  23.         }
  24.         currentTop += 1;
  25.         if (currentTop == (marqueesHeight + 1)) {
  26.             stoptime += 1;
  27.             currentTop -= 1;
  28.             if (stoptime == 1) {
  29.                 currentTop = 0;
  30.                 stoptime = 0;
  31.             }
  32.         } else {
  33.             preTop = scrollElem.scrollTop;
  34.             scrollElem.scrollTop += 1;
  35.             if (preTop == scrollElem.scrollTop) {
  36.                                 //console.log("preTop =" + preTop);
  37.                 scrollElem.scrollTop = freshScrollHeight + 2;
  38.                 scrollElem.scrollTop += 1;
  39.             }
  40.         }
  41.         setTimeout(scrollUp, 5);//控制速度 越大越慢
  42.     };
  43.     var restartScroll = function () {
  44.         scrollElem.scrollTop = 0;
  45.         setTimeout(scrollUp, 50);
  46.     };
  47.     jQuery(tableDom).hover(function () {
  48.         stopscroll = true;
  49.     }, function () {
  50.         stopscroll = false;
  51.     });
  52.     //控制开始是否延迟
  53. setTimeout(restartScroll, 0);
  54. }
  55. /*
  56. *复制表格每行内容
  57. */
  58. function copyTableRows(tableDom) {
  59.     var tBody = tableDom.firstElementChild.children[1];
  60.         var rowList = tBody.children;
  61.     var rowLength = rowList.length;
  62.     for(var i=0 ; i<rowLength ; i++){
  63.         var trow = rowList[i];
  64.         var newTR = tBody.insertRow(rowLength+i);
  65.                 newTR.style.height = trow.style.height;
  66.                 copyRowCells(trow , newTR);
  67.     }
  68. }
  69. /*
  70. *复制每行的列内容
  71. */
  72. function copyRowCells(trow , newTR) {
  73.     var cellList = trow.children;
  74.     var cellLength = cellList.length;
  75.     var cellHtml = "";
  76.     for(var i=0 ; i<cellLength ; i++){
  77.     var cell = cellList[i];
  78.         cellHtml += cell.outerHTML;
  79.     }
  80.     newTR.innerHTML = cellHtml;
  81. }
  82. //复制表格行内容
  83. copyTableRows(document.getElementById('GRID1'));//GRID1为表格代号
  84. autoScrollTable(document.getElementById('GRID1'),document.getElementById("HHH2").clientHeight);//HHH2为表格所在容器代号
复制代码



8个回答

只看楼主

xxxl 数据领袖Lv6

发表于2020-11-12 14:55

只看该作者

取消 关注该作者的回复

沙发

将需要滚动的表格放在容器中然后再客户端脚本中写以下代码



  1. /***
  2. **表格内容自动轮播脚本
  3. **@param tableDom内容滚动的表格,最好是表格的父DIV
  4. **@param visibleHeight 可视区的高度
  5. ***/
  6. function autoScrollTable(tableDom, visibleHeight) {
  7.     var marqueesHeight = visibleHeight;
  8.     var stopscroll = false;
  9.     var scrollElem = tableDom;
  10.         var freshScrollHeight = tableDom.firstElementChild.offsetHeight/4;
  11.     var preTop = 0;
  12.     var currentTop = 0;
  13.     var stoptime = 0;
  14.     with (scrollElem) {
  15.         style.height = parseFloat(marqueesHeight) + "px";
  16.         style.overflow = 'hidden';
  17.         noWrap = true;
  18.     }
  19.     var scrollUp = function () {
  20.         if (stopscroll) {
  21.             setTimeout(scrollUp, 50);
  22.             return;
  23.         }
  24.         currentTop += 1;
  25.         if (currentTop == (marqueesHeight + 1)) {
  26.             stoptime += 1;
  27.             currentTop -= 1;
  28.             if (stoptime == 1) {
  29.                 currentTop = 0;
  30.                 stoptime = 0;
  31.             }
  32.         } else {
  33.             preTop = scrollElem.scrollTop;
  34.             scrollElem.scrollTop += 1;
  35.             if (preTop == scrollElem.scrollTop) {
  36.                                 //console.log("preTop =" + preTop);
  37.                 scrollElem.scrollTop = freshScrollHeight + 2;
  38.                 scrollElem.scrollTop += 1;
  39.             }
  40.         }
  41.         setTimeout(scrollUp, 5);//控制速度 越大越慢
  42.     };
  43.     var restartScroll = function () {
  44.         scrollElem.scrollTop = 0;
  45.         setTimeout(scrollUp, 50);
  46.     };
  47.     jQuery(tableDom).hover(function () {
  48.         stopscroll = true;
  49.     }, function () {
  50.         stopscroll = false;
  51.     });
  52.     //控制开始是否延迟
  53. setTimeout(restartScroll, 0);
  54. }
  55. /*
  56. *复制表格每行内容
  57. */
  58. function copyTableRows(tableDom) {
  59.     var tBody = tableDom.firstElementChild.children[1];
  60.         var rowList = tBody.children;
  61.     var rowLength = rowList.length;
  62.     for(var i=0 ; i<rowLength ; i++){
  63.         var trow = rowList[i];
  64.         var newTR = tBody.insertRow(rowLength+i);
  65.                 newTR.style.height = trow.style.height;
  66.                 copyRowCells(trow , newTR);
  67.     }
  68. }
  69. /*
  70. *复制每行的列内容
  71. */
  72. function copyRowCells(trow , newTR) {
  73.     var cellList = trow.children;
  74.     var cellLength = cellList.length;
  75.     var cellHtml = "";
  76.     for(var i=0 ; i<cellLength ; i++){
  77.     var cell = cellList[i];
  78.         cellHtml += cell.outerHTML;
  79.     }
  80.     newTR.innerHTML = cellHtml;
  81. }
  82. //复制表格行内容
  83. copyTableRows(document.getElementById('GRID1'));//GRID1为表格代号
  84. autoScrollTable(document.getElementById('GRID1'),document.getElementById("HHH2").clientHeight);//HHH2为表格所在容器代号
复制代码



tyy__think 小试身手Lv3

发表于2020-11-12 15:29

只看该作者

取消 关注该作者的回复

板凳

xxxl 发表于 2020-11-12 15:07
将需要滚动的表格放在容器中然后再客户端脚本中写以下代码

好的 感谢

xxxl 数据领袖Lv6

发表于2020-11-12 15:35

只看该作者

取消 关注该作者的回复

地板


嗯嗯 不客气

tyy__think 小试身手Lv3

发表于2020-11-13 10:33

只看该作者

取消 关注该作者的回复

5#

xxxl 发表于 2020-11-12 14:55
将需要滚动的表格放在容器中然后再客户端脚本中写以下代码

打扰啦,这个表格的滚动有效果了,但是滚动有一点问题呢,这个脚本语言包含表头吗?而且一直滚动不完呢,卡在3这里就一直在跳,我看脚本也看不出到底要改哪里


xxxl 数据领袖Lv6

发表于2020-11-13 10:59

只看该作者

取消 关注该作者的回复

6#

tyy__think 发表于 2020-11-13 10:33
打扰啦,这个表格的滚动有效果了,但是滚动有一点问题呢,这个脚本语言包含表头吗?而且一直滚动不完呢, ...

您是要固定表头不滚动吗,重新在一个帖子吧 我再给您找下改成不滚动表头的脚本

tyy__think 小试身手Lv3

发表于2020-11-13 11:00

只看该作者

取消 关注该作者的回复

7#

xxxl 发表于 2020-11-13 10:59
您是要固定表头不滚动吗,重新在一个帖子吧 我再给您找下改成不滚动表头的脚本 ...

好的谢谢

esen_50RKP6LVCN 数据小白Lv1

发表于2024-8-20 16:02

只看该作者

取消 关注该作者的回复

8#

滚的很快咋调呢

esen_50RKP6LVCN 数据小白Lv1

发表于2024-8-20 16:15

只看该作者

取消 关注该作者的回复

9#

只能滚一次,刚写代码滚动,后面就不滚动了

登录后可回答问题,请登录注册

快速回复 返回顶部 返回列表

小时

全天响应

分钟

快速处理问题

工程师强势助力

明星产品
解决方案
联系合作

400咨询:400-0011-866

技术支持QQ:400-0011-866(工作日9:00-18:00)

产品建议邮箱yixin@esensoft.com

关注我们

扫TA学习更多干货

一对一专家交流

版权所有© 2006-2024 北京亿信华辰软件有限责任公司 京ICP备07017321号 京公网安备11010802016281号