ABI常用回填脚本汇总

4260
2

xxxl 数据领袖Lv6

发表于2021-3-19 19:23

楼主
本帖最后由 xxxl 于 2021-3-22 10:51 编辑

一、回填脚本说明
    回填脚本是在回填表的基础上实现回填过程中各种事件的脚本比如回填保存的同时跳转、全选批量删除数据、回填自动清空本行、保存子表的同时刷新主表等。
    回填脚本的设置入口有以下几种:
    在表元或按钮的基础设置>钻取设置>万能式钻取中写 截图202103181346575791.png
在表元的回填属性>事件>开始编辑或结束编辑中写
截图202103181352117275.png
在编辑区>高级>脚本>客户端脚本中写
截图202103181353526427.png
其他情况会在例子中做说明。


二、常见回填脚本
    2.1 保存回填数据的同时进行钻取
    需求场景:
    报表A,设置有分析区表格查询库表中的数据;报表B,设置有表格回填,用户可操作对数据修改并保存;
    期望实现,表B中修改数据后,点击保存按钮,保存填写的数据并跳转钻取到表A,报表A重新计算出回填后最新数据。
    脚本说明:
    写在按钮万能式钻取中。
  1. g_rptpage.cmd_saveReportData(null,function(res){
  2.         if(res["_result"] == "OK"){
  3.                 _zn('B60708');
  4.         }
  5. });
复制代码
   _zn('B60708')是万能式钻取函数相关介绍和应用可以看这两个帖子https://bbs.esensoft.com/thread-138807-1-1.html https://bbs.esensoft.com/thread-138539-1-1.html。
   最终效果:
回填保存并跳转.gif

    2.2 多选批量删除
    需求场景:
    回填表格中加入多选按钮,勾选浮动行对应的勾选框,点击批量删除按钮删除数据。
    表样设计:
    表样中给需要加入勾选框的空白列设置字符型,
截图202103191044199890.png
同时给该表元设置回填属性,编辑器为多选按钮、枚举值为:1、勾选显示编辑器。
截图202103191046551068.png

    脚本说明:
    写在按钮万能式钻取中。
  1. var options = {};
  2. options["name"] = "GRID1.A2";//此处写根据哪列字段信息筛选,如GRID1.A2,表示GRID1表格的A2列
  3. options["value"] = [1];//此处写满足筛选的条件,如值等于多少,目前不支持表达式,此处注意用数组
  4. options["oprow"] = "delrow";//此处写进行什么操作,只支持后面三种:delrow 删除行操作 getdatas 获取数据 doall获取数据且删除对应行
  5. debugger;
  6. g_formmgr.opFilteredRows(options);
  7. g_rptpage.cmd_saveReportData();//删除后的保存事件
复制代码
   最终效果:
批量删除回填.gif


    2.3 回填自动清空本行
    需求场景:
    回填表格的时候,回填下拉框在重新选择某一项的时候,希望这一项的后面几列能够清空,不用再手动删除。
    表样设计:
    该需求需要表元设置回填下拉框,在表元回填属性>编辑器>下拉框,然后设置维下拉就可以了。
截图202103191428454059.png
    脚本说明:
    写在客户端脚本中。
  1. var g="GRID1";//表名
  2. var grid = g_formmgr.rpts[g].gridbase;
  3. var cells = grid.getCells();
  4. var b=[],a=[];
  5. var sli=1;//开始列
  6. var i=1;//开始行
  7. var d=3;//清空列数
  8. for(;i<=cells.length;i++){//定位
  9. b=grid.getCell(i-1,sli-1);
  10. b.celldom.id=i;
  11. a[i]=i;
  12. }

  13. function clear(j){//清空
  14. for(k=sli;k<(sli+d);k++){
  15. var op = {};
  16. op.name = g+"."+String.fromCharCode(k+65)+j;
  17. op.value = "";
  18. g_formmgr.setValue(op);
  19. }
  20. }

  21. a.forEach(function(item,x){//监听
  22. $("#"+x+"").bind("DOMNodeInserted",function(){
  23. clear(x);
  24. });
  25. });
复制代码
    最终效果:
回填下拉框清空本行.gif

    2.4 回填删除数据时弹出提示框,用户确认后保存并刷新
    需求说明:
    回填表设置删除时提示“确认删除该行数据吗?”,当用户点击确认时删除该行数据并刷新。
    表样设计:
    在浮动行中,设置一个表元用来存放回填脚本事件
截图202103191526194255.png
    脚本说明:
    在表元万能式钻取中写。
  1. var a=confirm("确认删除该行数据吗?")//删除时让客户确认弹框
  2. if(a){
  3. var options = {};
  4. options["name"] = "GRID1.D2";//此处写钻取万能式所在表元名
  5. g_formmgr.delRow(options);//删除行
  6. }


  7. execmd('saveReportData');  //保存
  8. setTimeout(function(){
  9.        execmd('calcReport');    // 保存后自动刷新
  10.       }, 1000);
复制代码
   最终效果:
删除本行提示加保存.gif



   2.5 回填多选按钮全选设置
    需求场景:
    回填表中可通过设置多选按钮实现类似批量删除的操作,但是当数据过多时希望增加一个全选按钮,直接全选所有浮动行数据。
    表样分析:
    参考2.2需要给A1、A2都设置多选按钮,需要对A1回填属性>事件>结束编辑中设置全选脚本。
    截图202103191556102102.png
     脚本说明:
    在回填属性结束编辑中写。
  1. var v = gridcell.getValue();
  2. debugger;
  3. var c =document.getElementsByClassName('eui-anim').length;
  4. for(var r=2;r<c+1;r++){
  5. var grid = g_formmgr.rpts["GRID1"];//对应表格id
  6. grid.setValue({"name":"A"+r,"value":v});
  7. }
复制代码
   最终效果:
   全选按钮效果:
全选按钮.gif
    这个脚本可以配合2.2批量删除脚本实现全选批量删除的效果,全选加批量删除效果:
全选批量删除.gif
    2.6 回填表保存子表的同时刷新主表
    需求场景:
    通过点击按钮弹出回填表单,填写完毕后点击确认的时候上报内容到数据库的同时刷新主表的展示。
    表样设计:
    在主表按钮上设置对话框钻取,分别在子表脚本和主表脚本上设置脚本。子表正常设置回填
截图202103191905569072.png
    脚本说明:
    子表脚本:
  1. g_rptpage.cmd_saveReportData();//保存
复制代码
   主表脚本:
  1. g_rptpage.calcThisReport();//刷新
复制代码
    最终效果:
保存的同时刷新.gif






最近看过此主题的会员

天晴放羊

本主题由admin于2022-4-27 15:49加入精华

2个回答

只看楼主

Gardenia 小试身手Lv3

发表于2021-11-15 21:21

只看该作者

取消 关注该作者的回复

沙发

若是需要勾选后填报数据,然后再次查询出对应数据后,取消勾选某条数据然后删除,该怎么删除?

xxxl 数据领袖Lv6

发表于2021-11-29 16:43

只看该作者

取消 关注该作者的回复

板凳

Gardenia 发表于 2021-11-15 21:21
若是需要勾选后填报数据,然后再次查询出对应数据后,取消勾选某条数据然后删除,该怎么删除? ...

上面有删除相关的脚本试试

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

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

小时

全天响应

分钟

快速处理问题

工程师强势助力

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

渠道咨询电话:137-0120-6790

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

产品建议邮箱yixin@esensoft.com

关注我们

扫TA学习更多干货

进群交流、一对一指导

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