finereport 数据集中不执行 ${IF(GREPARRAY($fine_role,ITEM = "xxx")="xxx","AND DEPT_NAME IN ('A','B','C','D','E','F')","")} ,请问是什么原因
1、参数界面
获取参数界面的控件名为address的控件
_g().parameterEl.getWidgetByName('address')
获取参数界面的控件名为address的值
_g().parameterEl.getWidgetByName('address').getValue();
赋值
_g().parameterEl.getWidgetByName('address').setValue("987");
2、 获取报表名为REPORT0的当前页 – 需在函数里进行,如:
setTimeout(function() {
alert(_g().options.form.getWidgetByName("REPORT0").currentPage)
},1000)
3、跳转报表名为REPORT0到报表到指定第4页面 – 需在函数里进行,如:
setTimeout(function() {
_g().options.form.getWidgetByName("REPORT0").gotoPage(4);
},1000)
4、 调用对应的事件比如按钮Search
_g().parameterEl.getWidgetByName("Search").fireEvent("click") 单击事件
系统参数 (https://help.fanruan.com/finereport/doc-view-250.html)
// 报表当前访问的页码
$$page_number
// 报表的总页数
$totalPage_number
报表刷新方法总结(https://help.fanruan.com/finereport/doc-view-1857.html?source=1)
1、 定时刷新(间隔)
setInterval("self.location.reload();",10000); //10000ms即每10s刷新一次页面
2、 定时刷新(倒计时,只加载一次)
setTimeout("self.location.reload();",10000); //10000ms即每10s刷新一次页面
3、 清空定时(清空的是定时器对应的id),setTimeout同理
var id = setInterval("self.location.reload();",10000);
clearInterval(window.tag)
问题:
1、问:定时页面加快?
答:因为定时器没有清除,所以定时器累加执行了,导致每次查询以后,变快了。只要每次查询后,页面加载的时候清除原本的定时器
if(window.tag!=null){
window.clearInterval(window.tag);
}
window.tag=setInterval(function(){.......},1000)
回答:
finereport支持通过JS动态传递参数至数据集,下面提供一个代码示例来实现:
sql select * from table where column = :parameter
javascript var param = "value"; // 设定动态参数 var url = "report.do?op=fr_query"; // 数据集请求的url地址 var data = {"dataStores": {}, "parameters": {"parameter": [param]}, "resid": "dataset ID", "subReport": {}}; // 将参数加入到data中 var result = null; // 保存数据结果的变量 // 发送Ajax请求 $.ajax({ type: "POST", url: url, data: JSON.stringify(data), contentType: "application/json; charset=utf-8", dataType: "json", async: false, success: function (msg) { result = msg.dataStores.storeName.rowSet.primary; // 将返回结果赋值给result变量 } }); return result; // 返回数据结果
说明: * 上面的dataStores和subReport是返回数据的格式,可以在finereport的文档中了解详细信息 * 这个例子中使用的是JQuery库来发送Ajax请求,需要先引入该库
这样就可以动态指定参数,通过JS将参数传递给数据集,实现在查询时动态指定参数的功能。
注意:以上代码仅供参考,实际使用需要根据具体情况进行调整。