-
xxxl 数据领袖Lv6
发表于2021-3-19 19:23
楼主
本帖最后由 xxxl 于 2021-3-22 10:51 编辑
一、回填脚本说明
回填脚本是在回填表的基础上实现回填过程中各种事件的脚本比如回填保存的同时跳转、全选批量删除数据、回填自动清空本行、保存子表的同时刷新主表等。
回填脚本的设置入口有以下几种:
在表元或按钮的基础设置>钻取设置>万能式钻取中写
在表元的回填属性>事件>开始编辑或结束编辑中写
在编辑区>高级>脚本>客户端脚本中写
其他情况会在例子中做说明。
二、常见回填脚本
2.1 保存回填数据的同时进行钻取
需求场景:
报表A,设置有分析区表格查询库表中的数据;报表B,设置有表格回填,用户可操作对数据修改并保存;
期望实现,表B中修改数据后,点击保存按钮,保存填写的数据并跳转钻取到表A,报表A重新计算出回填后最新数据。
脚本说明:
写在按钮万能式钻取中。
复制代码 _zn('B60708')是万能式钻取函数相关介绍和应用可以看这两个帖子https://bbs.esensoft.com/thread-138807-1-1.html https://bbs.esensoft.com/thread-138539-1-1.html。
最终效果:
2.2 多选批量删除
需求场景:
回填表格中加入多选按钮,勾选浮动行对应的勾选框,点击批量删除按钮删除数据。
表样设计:
表样中给需要加入勾选框的空白列设置字符型,
同时给该表元设置回填属性,编辑器为多选按钮、枚举值为:1、勾选显示编辑器。
脚本说明:
写在按钮万能式钻取中。
复制代码 最终效果:
2.3 回填自动清空本行
需求场景:
回填表格的时候,回填下拉框在重新选择某一项的时候,希望这一项的后面几列能够清空,不用再手动删除。
表样设计:
该需求需要表元设置回填下拉框,在表元回填属性>编辑器>下拉框,然后设置维下拉就可以了。
脚本说明:
写在客户端脚本中。
复制代码 最终效果:
2.4 回填删除数据时弹出提示框,用户确认后保存并刷新
需求说明:
回填表设置删除时提示“确认删除该行数据吗?”,当用户点击确认时删除该行数据并刷新。
表样设计:
在浮动行中,设置一个表元用来存放回填脚本事件
脚本说明:
在表元万能式钻取中写。
复制代码 最终效果:
2.5 回填多选按钮全选设置
需求场景:
回填表中可通过设置多选按钮实现类似批量删除的操作,但是当数据过多时希望增加一个全选按钮,直接全选所有浮动行数据。
表样分析:
参考2.2需要给A1、A2都设置多选按钮,需要对A1回填属性>事件>结束编辑中设置全选脚本。
脚本说明:
在回填属性结束编辑中写。
复制代码 最终效果:
全选按钮效果:
这个脚本可以配合2.2批量删除脚本实现全选批量删除的效果,全选加批量删除效果:
2.6 回填表保存子表的同时刷新主表
需求场景:
通过点击按钮弹出回填表单,填写完毕后点击确认的时候上报内容到数据库的同时刷新主表的展示。
表样设计:
在主表按钮上设置对话框钻取,分别在子表脚本和主表脚本上设置脚本。子表正常设置回填
脚本说明:
子表脚本:
复制代码 主表脚本:
复制代码 最终效果:
一、回填脚本说明
回填脚本是在回填表的基础上实现回填过程中各种事件的脚本比如回填保存的同时跳转、全选批量删除数据、回填自动清空本行、保存子表的同时刷新主表等。
回填脚本的设置入口有以下几种:
在表元或按钮的基础设置>钻取设置>万能式钻取中写
在表元的回填属性>事件>开始编辑或结束编辑中写
在编辑区>高级>脚本>客户端脚本中写
其他情况会在例子中做说明。
二、常见回填脚本
2.1 保存回填数据的同时进行钻取
需求场景:
报表A,设置有分析区表格查询库表中的数据;报表B,设置有表格回填,用户可操作对数据修改并保存;
期望实现,表B中修改数据后,点击保存按钮,保存填写的数据并跳转钻取到表A,报表A重新计算出回填后最新数据。
脚本说明:
写在按钮万能式钻取中。
- g_rptpage.cmd_saveReportData(null,function(res){
- if(res["_result"] == "OK"){
- _zn('B60708');
- }
- });
最终效果:
2.2 多选批量删除
需求场景:
回填表格中加入多选按钮,勾选浮动行对应的勾选框,点击批量删除按钮删除数据。
表样设计:
表样中给需要加入勾选框的空白列设置字符型,
同时给该表元设置回填属性,编辑器为多选按钮、枚举值为:1、勾选显示编辑器。
脚本说明:
写在按钮万能式钻取中。
- var options = {};
- options["name"] = "GRID1.A2";//此处写根据哪列字段信息筛选,如GRID1.A2,表示GRID1表格的A2列
- options["value"] = [1];//此处写满足筛选的条件,如值等于多少,目前不支持表达式,此处注意用数组
- options["oprow"] = "delrow";//此处写进行什么操作,只支持后面三种:delrow 删除行操作 getdatas 获取数据 doall获取数据且删除对应行
- debugger;
- g_formmgr.opFilteredRows(options);
- g_rptpage.cmd_saveReportData();//删除后的保存事件
2.3 回填自动清空本行
需求场景:
回填表格的时候,回填下拉框在重新选择某一项的时候,希望这一项的后面几列能够清空,不用再手动删除。
表样设计:
该需求需要表元设置回填下拉框,在表元回填属性>编辑器>下拉框,然后设置维下拉就可以了。
脚本说明:
写在客户端脚本中。
- var g="GRID1";//表名
- var grid = g_formmgr.rpts[g].gridbase;
- var cells = grid.getCells();
- var b=[],a=[];
- var sli=1;//开始列
- var i=1;//开始行
- var d=3;//清空列数
- for(;i<=cells.length;i++){//定位
- b=grid.getCell(i-1,sli-1);
- b.celldom.id=i;
- a[i]=i;
- }
- function clear(j){//清空
- for(k=sli;k<(sli+d);k++){
- var op = {};
- op.name = g+"."+String.fromCharCode(k+65)+j;
- op.value = "";
- g_formmgr.setValue(op);
- }
- }
- a.forEach(function(item,x){//监听
- $("#"+x+"").bind("DOMNodeInserted",function(){
- clear(x);
- });
- });
2.4 回填删除数据时弹出提示框,用户确认后保存并刷新
需求说明:
回填表设置删除时提示“确认删除该行数据吗?”,当用户点击确认时删除该行数据并刷新。
表样设计:
在浮动行中,设置一个表元用来存放回填脚本事件
脚本说明:
在表元万能式钻取中写。
- var a=confirm("确认删除该行数据吗?")//删除时让客户确认弹框
- if(a){
- var options = {};
- options["name"] = "GRID1.D2";//此处写钻取万能式所在表元名
- g_formmgr.delRow(options);//删除行
- }
- execmd('saveReportData'); //保存
- setTimeout(function(){
- execmd('calcReport'); // 保存后自动刷新
- }, 1000);
2.5 回填多选按钮全选设置
需求场景:
回填表中可通过设置多选按钮实现类似批量删除的操作,但是当数据过多时希望增加一个全选按钮,直接全选所有浮动行数据。
表样分析:
参考2.2需要给A1、A2都设置多选按钮,需要对A1回填属性>事件>结束编辑中设置全选脚本。
脚本说明:
在回填属性结束编辑中写。
- var v = gridcell.getValue();
- debugger;
- var c =document.getElementsByClassName('eui-anim').length;
- for(var r=2;r<c+1;r++){
- var grid = g_formmgr.rpts["GRID1"];//对应表格id
- grid.setValue({"name":"A"+r,"value":v});
- }
全选按钮效果:
这个脚本可以配合2.2批量删除脚本实现全选批量删除的效果,全选加批量删除效果:
2.6 回填表保存子表的同时刷新主表
需求场景:
通过点击按钮弹出回填表单,填写完毕后点击确认的时候上报内容到数据库的同时刷新主表的展示。
表样设计:
在主表按钮上设置对话框钻取,分别在子表脚本和主表脚本上设置脚本。子表正常设置回填
脚本说明:
子表脚本:
- g_rptpage.cmd_saveReportData();//保存
- g_rptpage.calcThisReport();//刷新
3个回答
若是需要勾选后填报数据,然后再次查询出对应数据后,取消勾选某条数据然后删除,该怎么删除?