最近对移动端的报表开发颇有研究,细磨精算了好久,虽然到现在还是”囊中羞涩”,但决定还是先抛砖引玉,拿点小干货出来和大家分享。
研究的工具是比较有代表性的FineReport。
1、 移动端哪些地方支持调用js
web事件 分页预览 填报预览
加载结束事件 √ X
填报成功事件 -- √
报表内部js 单元格 图表
超级链接js √ √
控件事件 参数控件 填报控件 表单控件
初始化后事件 √ √ X
编辑前 √ √ X
编辑后 √ √ X
编辑结束 √ √ X
点击 √ √ X
状态改变 √ √ √
2、 报表控件支持的脚本函数
函数名 函数描述 填报控件 参数控件 表单控件
setEnable 设置控件的可用性 √ √ √
isEnable 判断控件是否可用 √ √ √
setVisible 设置控件的可见性 √ √ √
isVisible 判断控件的可见性 √ √ √
setValue 设置控件值 √ √ √
getValue 获取控件的值 √ √ √
setText 设置控件的显示值 √ √ √
getText 获取控件的显示值 √ √ √
reset 重置控件 √ √ √
fireEvent 触发指定名字的事件 √ √ √
3、 报表分页预览支持的脚本函数
函数名 函数描述 补充说明 实现
contentPane 当前报表对象 无 √
currentPageIndex 当前所在页 contentPane常用属性 只有分页预览报表才有 √
reportTotalPage 总页数 contentPane常用属性 只有分页预览报表才有 √
gotoFirstPage 首页 无 √
gotoPreviousPage 上一页 无 √
gotoNextPage 下一页 无 √
gotoLastPage 末页 无 √
gotoPage(n) 跳转到某一页 包含1个参数,表示跳转到第几页 √
4、 填报预览报表支持的脚本函数
函数名 函数描述 补充说明 实现
contentPane 当前报表对象 无 √
verifyReport 数据校验 只有填报表才可以用,contentPane常用方法 √
writeReport 提交报表 只有填报表才可以用,contentPane常用方法 √
verifyAndWriteReport 数据校验后提交报表 只有填报表才可以用,contentPane常用方法 √
curLGP current logicpane contentPane常用属性,只有填报预览及表单预览下才有 √
getCellValue(cell) 获取指定格子的值 包含1个参数,单元格,只有填报下有,curLGP常用方法 √
getCellValue(col, row) 获取指定格子的值 包含2个参数,列和行,只有填报下有,curLGP常用方法 √
setCellValue(cell, null, value) 设置指定格子的值 包含3个参数,单元格,空和值 √
setCellValue(col, row, value) 设置指定格子的值 包含3个参数,列,行和值,只有填报下有,curLGP常用方法 √
getWidgetByCell 获取指定单元格中的控件 包含1个参数,单元格,contentPane常用方法 √
getWidgetByName 获取指定名字的控件 包含1个参数,控件名,contentPane常用方法 √
getWidgetsByName 获取指定名称的扩展控件 包含1个参数,控件名,contentPane常用方法 √
5、常用的工具类脚本函数
函数名 函数描述 补充说明 实现
FR.Msg.alert 弹出消息框函数 包含3个参数,分别表示:标题,内容,回调函数 √
FR.Msg.confirm 值确认弹出框函数 包含3个参数,分别表示:标题,值,回调函数 √
FR.Msg.prompt 可修改值的值确认弹出框函数 包含4个参数,分别表示:标题,说明,值,回调函数 √
FR.Msg.toast 在页面边缘出现的消息提示块,一小段时间后自动消失 包含1个参数,表示要提示的信息 √
FR.cjkEncode 进行cjk编码 包含1个参数,字符串 √
FR.cjkDecode 进行cjk解码 包含1个参数,字符串 √
FR.location 地理位置获取 包含一个回掉函数返回获取状态及信息 √
FR.doHyperlinkByGet /FR.doHyperlinkByPost / √
FR.ajax 异步请求函数 / √
_g().parameterCommit() 分页预览及填报预览自动查询 / √
contentPane.setAppearRefresh() 页面再现的时候自动刷新 / √
以上对应着报表的功能大致罗列了以下框架,下面先举一些小示例
获取控件的一系列方法
this.options.form.getWidgetByName("控件名"); //参数界面及表单中获取控件
contentPane.getWidgetByCell("单元格"); //填报界面获取控件
contentPane.getWidgetByName("控件名"); //填报界面获取控件
填报成功后刷新当前页
var url ="/WebReport/ReportServer?reportlet=js/shauxindangqian.cpt&op=write&__replaceview__=true"; FR.doHyperlinkByGet(url,{para:paravalue}); //刷新当前页面
js获取表单图表组件并刷新数据
var c=FR.Chart.WebUtils.getChart("chart0"); c.dataRefresh();
延时函数
setTimeout(function() { }, 500);
A超链至B填报,B提交数据后返回A时,A自动刷新显示新的数据
contentPane.setAppearRefresh(); //在A的加载结束后事件中添加js
以后会陆续分享一些移动端实用功能的应用实例,还有HTML5,欢迎一起探讨。