帆软报表-控件范围筛选
背景:了解报表的人都晓得报表的正文展示前一般都有一些筛选控件,以供筛选出想要的数据,但是往往有用户使用不当,导致报表服务器出现内存不足等问题出现,为了规避这种情况出现,限制用户对报表控件的筛选是一种方法。
举例:日期控件范围筛选限制,本次案例是对日期范围的限制,只允许筛选365天范围内
报表参数面板
步骤如下:
1.获取填写日期的控件名称
2.在查询按钮上编写事件JS,事件JS编写处可选择出发时机(点击/初始化),这里选择点击
3.编写JS代码时,可设置参数,引用JS文件
4.案例脚本:
//获取日期控件参数值,需根据报表的控件参数名替换此示例的参数名:此处是 p_date_start,p_date_end
var str_1 =this.options.form.getWidgetByName("p_date_start").getValue(); //开始日期
var str_2 =this.options.form.getWidgetByName("p_date_end").getValue(); // 截止日期
//将日期yyyymmdd 切割
var str_year_start=str_1.substr(0,4);
var str_month_start=str_1.substr(4,2);
var str_day_start=str_1.substr(6,2);
var str_year_end=str_2.substr(0,4);
var str_month_end=str_2.substr(4,2);
var str_day_end=str_2.substr(6,2);
var str_line= new String("-");
//拼接 成yyyy-mm-dd 格式
var p_date_1= str_year_start.concat(str_line,str_month_start,str_line,str_day_start);
var p_date_2= str_year_end.concat(str_line,str_month_end,str_line,str_day_end);
// 将yyyy-mm-dd 字符串类型 转成 时间型
var date_start= new Date(p_date_1);
var date_end= new Date(p_date_2);
// 日期做差,单位是 天
var p_diff = (date_end-date_start)/60/60/24/1000
// xxx 标识 使用范围限制的日期控件名称,有的报表多个日期筛选,必须提示是作用于哪个筛选
var str_alert_1 = new String("xxx查询跨度只能在");
var str_alert_2 = new String("天内,请重新选择!");
//这里的365可以设置成参数
var str_alert_all = str_alert_1.concat(365,str_alert_2)
if (p_diff>365 )
{
alert (str_alert_all);
return false;
}
else
{ return true;}
5.效果展示,若是筛选日期范围超过365天则会弹出提示框
温馨提示:以上只是帆软JS应用的冰山一角,还有更多应用等待你发掘,同时在帆软的技术学习论坛内也有许多案例,另如果你下载了帆软,可用帆软设计器打开帆软目录:FineReport_9.0\WebReport\WEB-INF\reportlets\doc
这里有很多设计器模板供你参考,其中就有目录:FineReport_9.0\WebReport\WEB-INF\reportlets\doc\JS 下有JS模板****