JS实现局部刷新cpt

目录:

1. 描述

填报模式下局部实时刷新某个单元格或者某列单元格。效果图如下:

2. 思路

在js局部刷新页面的加载结束事件中,利用sql函数将需要的数据查询出来。然后利用公式改变会重新读取的特性,更改对应的单元格值来达到重新读取数据库的目的。再用setInterval函数循环更改对应单元格值实现刷新目的。

3. 操作步骤

3.1 JS局部刷新模板

1)新建普通报表:JS局部刷新.cpt;添加模板数据集:select * from S客户 limit 5在表格列设置公式用sql函数读取对应列,如下图:

SQL("FRDemo", "SELECT 联系人姓名 FROM S客户 WHERE 1 = " + IF(E2 = 1, 1, 1) + " AND 公司名称 = '" + A2 + "'", 1, 1)

在E2单元格输入1之后将E列隐藏。

2)点击模板>模板web属性>填报页面设置,选择为该模板单独设置,添加加载结束事件,如下图:

//循环函数 setInterval(function(){ //获取第二行第5列E2单元格对象 var _changeCell = $("tr[tridx=1]","div.content-container").children().eq(4); //获取E2单元格值 var _changeVal = _changeCell.text(); //给表格赋值 if(_changeVal=="1"){ contentPane.setCellValue("E2",null,"2") }else if(_changeVal=="2"){ contentPane.setCellValue("E2",null,"1") } },1000)//1000表示1秒后循环刷新  

2.刷新某列,比如扩展列。

//_obj是tr对象 var _obj = $(".x-table tr"); //_length是tr行数 var _length = _obj.length; //循环函数 setInterval(function(){ //遍历tr for(var i = 0; i < _length; i++) { //如果第一个是标题,执行if条件中continue,没有标题请注释if条件 //如果第1,2,3都是标题行,请把if条件改成 if(i==0 || i==1|| i==2) if(i == 0){ continue; } //遍历tr中的对象td var _td = _obj.eq(i).find("td"); //需要刷新的列,eq(4)表示单元格E列 (可根据自己需要更改) var _this = _td.eq(4); //取单元格E列值 var _changeVal = _this.text(); //contentPane.setCellValue("E"+(i+1),null,"2") 意思是给E列单元格赋值 因为行号是从0开始所以赋值给E列单元格时候是i+1 if(_changeVal=="1"){ contentPane.setCellValue("E"+(i+1),null,"2") }else if(_changeVal=="2"){ contentPane.setCellValue("E"+(i+1),null,"1") } } },1000)//1000表示1秒后循环刷新   
上述截图使用了<刷新某列>公式。
3.2 填报模板
新建普通报表:填报.cpt;添加模板数据集:select * from S客户 limit 5;如下图拖入数据列:
模板>报表填报属性,如下图设置填报属性:
报表填报属性设置。

4. 预览效果

4.1 pc端预览效果

填报预览:填报.cpt/JS局部刷新.cpt;在填报页面修改联系人姓名的值,提交;

查看JS局部刷新页面,观察到联系人姓名(王小姐、杨先生、孙先生)已经实时更新为刚才修改过的值(01、02、03)了;如下图所示:

注:不支持移动端。

5. 已完成模板

点击在线查看模板:填报.cpt    JS局部刷新.cpt

已完成模板可参考:%FR_HOME%\WebReport\WEB-INF\reportlets\doc\JS\填报预览JS实例\60-JS局部刷新.cpt

                               %FR_HOME%\WebReport\WEB-INF\reportlets\doc\JS\填报预览JS实例\60-填报.cpt

点击下载模板:填报.cpt    JS局部刷新.cpt

附件列表


主题:
标签: 已验证 9.0验证

文档内容仅供参考,如果你需要获取更多帮助,付费/准付费客户请咨询帆软技术支持
关于技术问题,您还可以前往帆软社区,点击顶部搜索框旁边的提问按钮
若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201