FineReport——JS二次开发(分页预览)
BS访问某个cpt模板,报表servlet将会将cpt文件解析成对应的html,报表内容最终转换为一个table,位于id=content-container的div中。
在模板和html页面中,他们定义的方法可以相互调用,不过得先获取到对象:
由于分页预览只是展现,在这种查看方式下FR没有现成单元格获取方法,可以用jquery语法获取指定单元格,如:
$("tr[tridx=行号]","div.content-container").children().eq(列号)
在填报预览中可以有多种方法获取单元格的值。
获取单元格值:
$("tr[tridx=行号]","div.content-container").children().eq(列号).html();
修改单元格值:
$("tr[tridx=行号]","div.content-container").children().eq(列号).html(新值);
鼠标点击改变鼠标所在行颜色:
contentPane.makeHighlight('red'); //使点击的行变成红色
鼠标滑过改变鼠标所在行的颜色:
contentPane.makeHighlight('red','mouseover');
定时刷新报表模板:
setInterval("self.location.reload();",10000); //10000ms即每10s刷新一次页面。
禁用右键(防止通过查看源码而得到报表路径):
function nocontextmenu(event){ event = event || window.event; if (event.which == 2 ) event.returnValue = false; return false; } document.oncontextmenu = nocontextmenu;
改变鼠标所在行的行高:
$('tr').each(function(){ var _height = $(this).height(); $(this) .mouseover(function(){$(this).height('40');}) .mouseout(function(){$(this).height(_height);}); });
通过选择一个日期给另外一个日期控件赋值(在一个日期控件的编辑后事件中添加如下JS,控件名分别为:starttime,endtime):
var date1=new Date(this.getValue()); var date2= new Date(); date2.setTime(date1.getTime()+(7*24*60*60*1000)); this.options.form.getWidgetByName("endtime").setValue(date2);