Birt制作表格分页信息,通过Script脚本把组件的设置值传递到js脚本变量中
页面效果:
<!--[endif]-->
组件脚本变量似乎于javascript不能用,要获取组件设置的属性还需要绕些弯弯,下面以制作表格分页信息为例说明。制作表格及样式的部分在些就省略不提了,大家都懂的。
本文的分页信息放到Master Page里,以便在每一页都可以看得到:
<!--[endif]-->
图中标示的部分是一个Text组件,选择HTML类型,输入如下内容:
<div id="pageInfo" />
<script type="text/javascript">
// 脚本先于pageNumber和totalPage执行,所以需要延时。
setTimeout(function(){
// pageNumber和totalPage是report-viewer/NavigationbarFragment.jsp里的元素,分别显示当前页和总页数。
var pageNumber = parseInt(document.getElementById("pageNumber").innerText);
var totalPage = parseInt(document.getElementById("totalPage").innerText);
// pageSize来自于位于table头部的text(html类型)的脚本(非js脚本)。
// 通过table的onPrepare脚本获取其设置的pageBreakInterval(分页间隔,即分页大小)值,然后通过table里的text元素将其读出并传到js脚本里(保存为js公共域的变量即可),需保证其在本text标签前完成渲染。
var firstIndex = pageSize * (pageNumber - 1) + 1;
var lastIndex = pageSize * pageNumber;
lastIndex = lastIndex > total ? total : lastIndex;
var str = "power by fbpang 共 " + total + " 条记录,当前显示 " + firstIndex + " ~ " + lastIndex + " 条记录 第 "
+ pageNumber + " 页,共 " + totalPage + " 页";
document.getElementById("pageInfo").innerText = str;
}, 100);
</script>
脚本里主要解决的就是获取当前分面(pageNumber)、分页总数(totalPage)和分页大小(pageSize)。
获取当前分面和分页总数可查看NavigationbarFragment.jsp文件,在WebRoot/report-viewer/birt/pages/control目录下(birt3.7.2,其他版本的自己找),这个文件是报表驱动(report
engine)里的文件,用于控制分页的导航页,即下图部分:
<!--[endif]-->
打开NavigationbarFragment.js文件,找到如下代码:
<TD WIDTH="100%" NOWRAP>
<B>
<%
if ( attributeBean.getBookmark( ) != null )
{
%>
<%=
BirtResources.getMessage( "birt.viewer.navbar.prompt.one" )
%>
<SPAN ID='pageNumber'></SPAN>
<%= BirtResources.getMessage( "birt.viewer.navbar.prompt.two" )%>
<SPAN ID='totalPage'></SPAN>
<%
}
else
{
%>
<%= BirtResources.getMessage( "birt.viewer.navbar.prompt.one" )%>
<SPAN ID='pageNumber'><%= ""+attributeBean.getReportPage( ) %></SPAN>
<%= BirtResources.getMessage( "birt.viewer.navbar.prompt.two" )%>
<SPAN ID='totalPage'></SPAN>
<%
}
%>
</B>
</TD>
这就是下图所标示部分的代码:
<!--[endif]-->
其中pageNumber是当前页码,totalPage是分页总数,在js脚本里通过如下代码获取:
var pageNumber = parseInt(document.getElementById("pageNumber").innerText);
var totalPage = parseInt(document.getElementById("totalPage").innerText);
获取分页大小有些绕弯,在table的onPrepare脚本里获取分页间隔(pageBreakInterval,也就是分页大小)的值:
reportContext.setGlobalVariable("pageBreakInterval",this.getUserProperty("pageBreakInterval"));
分页间隔(pageBreakInterval)是在table的Page Break属性里设置的,如下图:
<!--[endif]-->
再在table的列头里添加一个Text组件,组件不写任何值,其任务就是做组件Script脚本和html页面js脚本的信使:
<!--[endif]-->
在其onPrepare脚本里写下如下代码,其目的是通组件Script脚本将获取的table属性保存到js脚本变量以备使用,因为table的onPrepare先于其里面的组件的onPrepare执行,所以可以这样获取值:
this.contentType = "html";
this.content = "<script type=\"text/javascript\">var pageSize = "
+ reportContext.getGlobalVariable("pageBreakInterval") + "</script>";
然后就可以在Master Page里的Text使用了,使用setTimeout延迟100ms是因为Master Page里的Text会先于NavigationbarFragment.jsp里的分页导航渲染,为保证读取到当前分页和分页总数,必须延迟这段代码的执行。
Birt报表提供了分页导航功能,其已满足用户的使用,似乎没有必要在弄一个显示分页信息的东西出来,但是本文只是在描述这种组件属性值的获取以及在js中的使用的方法。
初学birt,对脚本的使用不太明了,文中这种方式显得太过幼稚,难登诸位大神的法眼。
本文只是学习笔记,记录下来与大家分享讨论,如果大家有更优雅的方式请不吝赐教。
分享到:
相关推荐
这段脚本检查数据项的值是否为null,如果是,则将其显示值设置为“0”。这不仅消除了报表中的空白,还确保了数据的一致性与完整性。 #### 示例二:比例计算与格式化 在报表中展示比例数据时,通常需要进行百分比...
2. 脚本支持:BIRT支持JavaScript脚本,允许在报表设计中添加自定义逻辑。 3. 报表分组和汇总:基于数据列进行分组,并计算汇总值,如总计、平均值等。 4. 图表功能:BIRT提供了丰富的图表类型,如柱状图、饼图、...
在BIRT(Business Intelligence and Reporting Tools)报表系统中,脚本数据源是一种灵活的数据获取方式,允许开发者通过JavaScript代码直接连接到各种数据源并执行自定义查询。这种数据源类型对于那些传统数据...
在BIRT(Business Intelligence and Reporting Tools)中添加...通过遵循上述步骤,你可以成功地将这一强大的JavaScript日期控件引入到你的BIRT报表中。记得在实际操作中根据你的项目结构和需求进行适当调整。
BIRT(Business Intelligence and Reporting Tools)是开源的报表系统,主要设计用于开发嵌入到Web应用程序中的报告。这个“birt中文帮助文档”压缩包包含了关于BIRT的详细信息,旨在帮助用户更好地理解和使用该工具...
### BIRT数据源设置与动态SQL详解 #### 一、通过Library实现数据库连接管理 **1.1 Library的理解** 在BIRT(Business Intelligence and Reporting Tools)中,Library是一种用于集中管理和复用报表资源的重要机制...
在BIRT中,你可以通过API创建ReportDesign对象,并添加各种元素,如表格(Table)、图表(Chart)等。`CreateTable.java`可能包含了初始化表格模型、设置列宽、行高、字体样式以及数据绑定等操作。例如,它可能调用`...
在IT行业中,BIRT(Business Intelligence and Reporting Tools)是一款开源的报表系统,广泛应用于Web应用程序中,用于生成复杂的业务报告。而JSP(JavaServer Pages)是Java平台上的动态网页技术,常用于构建用户...
然后,通过JavaScript脚本组装对应的Echarts组件来渲染数据,这样一来,就能够在Birt报表中展示出动态生成的图表。集成的关键在于组装Echarts的option对象,这些对象定义了图表的样式、布局、数据等信息。组装函数...
4. **在运行时应用动态数据源**:当报表运行时,BIRT会使用这些参数值填充到数据源的连接字符串中,从而动态地连接到指定的数据库。 5. **测试和验证**:确保动态数据源配置正确无误后,可以运行报表进行测试,观察...
在BIRT中,通过使用CSS,可以实现如表格样式、图表样式、页眉页脚样式、数据区域样式等自定义。这些样式可以应用于单元格、行、列、图表元素等各种报表组件,从而提供高度定制的视觉效果。 压缩包内的文件包括: 1....
BIRT支持JavaScript脚本,这使得你可以自定义报表行为,如计算值、过滤数据或执行其他复杂逻辑。在报表元素属性中,你可以找到脚本编辑器进行编写。 ### 7. 运行和预览报表 在设计完成后,点击"Preview"按钮可以...
在BIRT报表中,我们经常需要将表格隔行换颜色,以便更好地阅读和分析数据。实现方法是选择Row Detail一行,打开脚本编辑窗口,并在OnCreate事件中添加Javascript脚本,如下所示: if(row.__rownum % 2 == 0){ this...
5. **脚本与表达式**:Birt允许在报表中使用JavaScript进行自定义逻辑,文档会解释如何编写和应用脚本,以及如何使用表达式来动态计算值。 6. **报表参数**:Birt支持参数化报表,用户可以根据需要输入参数值来筛选...
2. 在BIRT报表设计中,可以通过拖放数据集字段到报表元素中来实现列绑定。这样,数据集的查询结果将自动填充到报表的相应位置。 3. 除了简单的列绑定,还可以实现复杂的表达式绑定,比如计算列、条件格式化等。 **...
通过这份“birt中文帮助文档”,用户可以从基础概念到高级特性的深入理解BIRT,学习如何设计、调试、部署和管理报表,提升数据分析和呈现的能力。文档中应包含了详细的步骤说明、示例代码和最佳实践,是BIRT初学者和...
介绍birt的脚本数据库连接 在web项目中把数据库连接放在web里面
2. **脚本和事件**:Birt支持JavaScript脚本,开发者可以通过脚本来控制报表行为,如计算、过滤、交互事件响应等。 3. **模板和样式**:学习如何创建和管理样式表,以实现统一的报表外观和主题。 4. **调度和自动...
6. **部署与运行**:BIRT报表可以嵌入到Web应用中,通过Servlet或JavaServer Pages (JSP)来运行。此外,还可以通过独立的BIRT Viewer应用程序进行离线查看。 7. **插件体系**:BIRT的开放性使得开发者可以创建...