点击按钮重置/清空部分参数组件值

2715
4

yangqh 数据老手Lv5

发表于2020-10-23 15:34

楼主
本帖最后由 yangqh 于 2020-10-23 15:36 编辑

了解咱们BI的都知道,按钮参数组件上可以选择一些常用的事件,比如【清空】,点击后清空其他参数组件值
那么如何实现点击按钮,清空/重置部分参数组件的值呢?(重置:当参数值有默认值时重置回默认值,而非清空)
这里举一个简单需求场景的例子:报表中有一个日期参数(默认值为today()获取当前日期)、2个输入框参数(无默认值),点击【重置】按钮将参数值都重置为初始状态

实现步骤:
Step1:报表模板上添加三个参数(@cs1、@cs2、@cs3)和一个按钮

Step2:编辑区脚本属性中设置客户端脚本:
  1. var btn = g_rptpage.calcParam.getParamByName("@cz"); //@cz是重置按钮的参数名称
  2. var date = new Date();
  3. var t=date.getFullYear()+""+(date.getMonth()+1)+""+date.getDate(); //获取当前时间

  4. var arr=["@cs1","@cs2","@cs3"];//需要重置值的参数名称
  5. var arg=[];
  6. for(var i=0;i<arr.length;i++){
  7. arg.push(g_rptpage.calcParam.getParamByName(arr[i]));
  8. }

  9. var csz=[t,"1","5"];//需要重置的目标值,和arr顺序一一对应,且和报表模板中设置的参数默认值保持一致来做出重置的效果

  10. $(btn.button).click(function(){
  11. for(var i=0;i<arg.length;i++){
  12.   arg[i].setValue(csz[i]); // 设置选中值
  13. }
  14. });
复制代码
这样就可以通过脚本中的赋值方法做出重置参数的效果啦~
参考表样下载请戳-》 cs(20201023_153438).zip (2.62 KB, 下载次数: )

最近看过此主题的会员

along0219

wsn123

esen_4Q6MZ9SWVR

13407717840

顾迅

txl

xuxp

chestnut

fenglan

wuq

西瓜小姐

keer_

esen_4620CAZ6S9QD

ihthis

4个回答

只看楼主

leiz 小试身手Lv3

发表于2020-10-23 15:40

只看该作者

取消 关注该作者的回复

沙发

玳玳我 小试身手Lv3

发表于2020-12-3 11:54

只看该作者

取消 关注该作者的回复

板凳

维下拉参数组件重置时比较特殊,这里是重新修改后的重置按钮脚本:
var clock= window.setInterval('cz()',2000);

function cz(){
        var btn = g_rptpage.calcParam.getParamByName("@cz"); //@bt是按钮的名称
        var date = new Date();
        var t=date.getFullYear()+""+(date.getMonth()+1)+""+date.getDate(); //获取当前时间

        var arr=["@cs1","@cs2","@cs3","@cs4"];//点击按钮需要清空的参数的参数名称、这里参数1为枚举下拉,参数2为日期参数,参数三和四为维下拉组件
        var arg=[];
        for(var i=0;i<arr.length;i++){
                 arg.push(g_rptpage.calcParam.getParamByName(arr));
        }
        var csz=["1",t,"110000",""];//参数值和arr对应
        var csCaption=["","","110000 北京",""];//只需给维下拉设置

        $(btn.button).click(function(){
                for(var i=0;i<arg.length;i++){
                        arg.setValue(csz); // 设置选中值
                        if(arg.tagname.startsWith("WidgetParamComboBoxTree")){
                                  arg.setCaption(csCaption);
                        }
                }
                window.clearInterval(clock);
        });
}

zxs 小试身手Lv3

发表于2021-7-23 17:07

只看该作者

取消 关注该作者的回复

地板

我这边重置的时候月份是12月,我把值导文本框才发现月份是用一位来表示的,导致问题,这个怎么弄

yangqh 数据老手Lv5

发表于2022-3-22 16:20

只看该作者

取消 关注该作者的回复

5#

当1-9月,月份前面加0,处理后脚本见下:

  1. var btn = g_rptpage.calcParam.getParamByName("@cz"); //@bt是按钮的名称
  2. var date = new Date();
  3. var year = date.getFullYear();
  4. var month = date.getMonth() + 1;
  5. var strDate = date.getDate();
  6.         if (month >= 1 && month <= 9) {
  7.             month = "0" + month;
  8.         }
  9.         if (strDate >= 0 && strDate <= 9) {
  10.             strDate = "0" + strDate;
  11.         }
  12. var t=year +""+ month +""+ strDate; //获取当前时间
  13. var arr=["@cs1","@cs2","@cs3"];//点击按钮需要清空的参数的参数名称
  14. var arg=[];
  15. for(var i=0;i<arr.length;i++){
  16. arg.push(g_rptpage.calcParam.getParamByName(arr[i]));
  17. }

  18. var csz=[t,"1","5"];//参数值和arr对应

  19. $(btn.button).click(function(){
  20. for(var i=0;i<arg.length;i++){
  21.   arg[i].setValue(csz[i]); // 设置选中值
  22. }
  23. });
复制代码

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

小时

全天响应

分钟

快速处理问题

工程师强势助力

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

400咨询:400-0011-866

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

产品建议邮箱yixin@esensoft.com

关注我们

扫TA学习更多干货

一对一专家交流