-
yangqh 数据老手Lv5
发表于2020-10-23 15:34
了解咱们BI的都知道,按钮参数组件上可以选择一些常用的事件,比如【清空】,点击后清空其他参数组件值
那么如何实现点击按钮,清空/重置部分参数组件的值呢?(重置:当参数值有默认值时重置回默认值,而非清空)
这里举一个简单需求场景的例子:报表中有一个日期参数(默认值为today()获取当前日期)、2个输入框参数(无默认值),点击【重置】按钮将参数值都重置为初始状态
实现步骤:
Step1:报表模板上添加三个参数(@cs1、@cs2、@cs3)和一个按钮
Step2:编辑区脚本属性中设置客户端脚本:
- var btn = g_rptpage.calcParam.getParamByName("@cz"); //@cz是重置按钮的参数名称
- var date = new Date();
- var t=date.getFullYear()+""+(date.getMonth()+1)+""+date.getDate(); //获取当前时间
- var arr=["@cs1","@cs2","@cs3"];//需要重置值的参数名称
- var arg=[];
- for(var i=0;i<arr.length;i++){
- arg.push(g_rptpage.calcParam.getParamByName(arr[i]));
- }
- var csz=[t,"1","5"];//需要重置的目标值,和arr顺序一一对应,且和报表模板中设置的参数默认值保持一致来做出重置的效果
- $(btn.button).click(function(){
- for(var i=0;i<arg.length;i++){
- arg[i].setValue(csz[i]); // 设置选中值
- }
- });
参考表样下载请戳-》
4个回答
维下拉参数组件重置时比较特殊,这里是重新修改后的重置按钮脚本:
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);
});
}
我这边重置的时候月份是12月,我把值导文本框才发现月份是用一位来表示的,导致问题,这个怎么弄
当1-9月,月份前面加0,处理后脚本见下:
- var btn = g_rptpage.calcParam.getParamByName("@cz"); //@bt是按钮的名称
- var date = new Date();
- var year = date.getFullYear();
- var month = date.getMonth() + 1;
- var strDate = date.getDate();
- if (month >= 1 && month <= 9) {
- month = "0" + month;
- }
- if (strDate >= 0 && strDate <= 9) {
- strDate = "0" + strDate;
- }
- var t=year +""+ month +""+ strDate; //获取当前时间
- var arr=["@cs1","@cs2","@cs3"];//点击按钮需要清空的参数的参数名称
- var arg=[];
- for(var i=0;i<arr.length;i++){
- arg.push(g_rptpage.calcParam.getParamByName(arr[i]));
- }
- var csz=[t,"1","5"];//参数值和arr对应
- $(btn.button).click(function(){
- for(var i=0;i<arg.length;i++){
- arg[i].setValue(csz[i]); // 设置选中值
- }
- });