最近对移动端的报表开发颇有研究,细磨精算了好久,虽然到现在还是“囊中羞涩”,但决定还是先抛砖引玉,拿点小干货出来和大家分享。
研究的工具是比较有代表性的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个参数,单元格,空和值,只有填报下有,curLGP常用方法 |
√ |
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 |
超级连接 |
包含2个参数,分别表示:超链的url, 传递的参数 |
√ |
FR.ajax |
异步请求函数 |
/ |
√ |
_g().parameterCommit() |
分页预览及填报预览自动查询 |
/ |
√ |
contentPane.setAppearRefresh() |
页面再现的时候自动刷新 |
/ |
√ |
?
以上对应着报表的功能大致罗列了以下框架,下面先举一些小示例
获取控件的一系列方法
?
this.options.form.getWidgetByName("控件名"); //参数界面及表单中获取控件
?
contentPane.getWidgetByCell("单元格"); //填报界面获取控件
??view
?
?
?
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,欢迎一起探讨。
原文:http://teacherzhang.iteye.com/blog/2289215