`

Birt制作表格分页信息,通过Script脚本把组件的设置值传递到js脚本变量中

    博客分类:
  • birt
 
阅读更多

 

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" )
							%>&nbsp;
							<SPAN ID='pageNumber'></SPAN>&nbsp;
							<%= BirtResources.getMessage( "birt.viewer.navbar.prompt.two" )%>&nbsp;
							<SPAN ID='totalPage'></SPAN>
						<%
							}
							else
							{
						%>
							<%= BirtResources.getMessage( "birt.viewer.navbar.prompt.one" )%>&nbsp;
							<SPAN ID='pageNumber'><%= ""+attributeBean.getReportPage( ) %></SPAN>&nbsp;
							<%= BirtResources.getMessage( "birt.viewer.navbar.prompt.two" )%>&nbsp;
							<SPAN ID='totalPage'></SPAN>
						<%
							}
						%>
						</B>
					</TD>
 

 

这就是下图所标示部分的代码:

<!--[endif]-->

其中pageNumber是当前页码,totalPage是分页总数,在js脚本里通过如下代码获取:

var pageNumber = parseInt(document.getElementById("pageNumber").innerText);
var totalPage = parseInt(document.getElementById("totalPage").innerText);
 

 

获取分页大小有些绕弯,在tableonPrepare脚本里获取分页间隔(pageBreakInterval,也就是分页大小)的值:

reportContext.setGlobalVariable("pageBreakInterval",this.getUserProperty("pageBreakInterval"));

分页间隔(pageBreakInterval)是在tablePage Break属性里设置的,如下图:

<!--[endif]-->

再在table的列头里添加一个Text组件,组件不写任何值,其任务就是做组件Script脚本和html页面js脚本的信使:

<!--[endif]-->

在其onPrepare脚本里写下如下代码,其目的是通组件Script脚本将获取的table属性保存到js脚本变量以备使用,因为tableonPrepare先于其里面的组件的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,对脚本的使用不太明了,文中这种方式显得太过幼稚,难登诸位大神的法眼。

本文只是学习笔记,记录下来与大家分享讨论,如果大家有更优雅的方式请不吝赐教

 

分享到:
评论
3 楼 bing_zz 2015-01-23  
u010821061 写道
u010821061 写道
你的total是如何获取到的啊?

新手不晓得你的页面的total是如何获取到的

获取当前分面和分页总数可查看NavigationbarFragment.jsp文件,在WebRoot/report-viewer/birt/pages/control目录下(birt3.7.2,其他版本的自己找),这个文件是报表驱动(report engine)里的文件,用于控制分页的导航页

-----
你没有理清楚报表显示页面那些导航,分页控制这些页面内容都来自于报表驱动器的哪个页面。

有一段时间没弄这个,记忆有些模糊。
要找这些页面也很简单,在浏览器上找页面源码,找导航页的内容,复制一些关键的文本,之后ctrl+h搜索birt的所有.jsp。
好了,找到之后,下一个就是慢慢研究吧。
2 楼 u010821061 2015-01-20  
u010821061 写道
你的total是如何获取到的啊?

新手不晓得你的页面的total是如何获取到的
1 楼 u010821061 2015-01-20  
你的total是如何获取到的啊?

相关推荐

    birt中使用script简介

    这段脚本检查数据项的值是否为null,如果是,则将其显示值设置为“0”。这不仅消除了报表中的空白,还确保了数据的一致性与完整性。 #### 示例二:比例计算与格式化 在报表中展示比例数据时,通常需要进行百分比...

    birt中文使用说明

    2. 脚本支持:BIRT支持JavaScript脚本,允许在报表设计中添加自定义逻辑。 3. 报表分组和汇总:基于数据列进行分组,并计算汇总值,如总计、平均值等。 4. 图表功能:BIRT提供了丰富的图表类型,如柱状图、饼图、...

    birt脚本数据源示例

    在BIRT(Business Intelligence and Reporting Tools)报表系统中,脚本数据源是一种灵活的数据获取方式,允许开发者通过JavaScript代码直接连接到各种数据源并执行自定义查询。这种数据源类型对于那些传统数据...

    在birt中添加js日期控件

    在BIRT(Business Intelligence and Reporting Tools)中添加...通过遵循上述步骤,你可以成功地将这一强大的JavaScript日期控件引入到你的BIRT报表中。记得在实际操作中根据你的项目结构和需求进行适当调整。

    birt中文帮助文档

    BIRT(Business Intelligence and Reporting Tools)是开源的报表系统,主要设计用于开发嵌入到Web应用程序中的报告。这个“birt中文帮助文档”压缩包包含了关于BIRT的详细信息,旨在帮助用户更好地理解和使用该工具...

    BIRT数据源设置和动态Sql

    ### BIRT数据源设置与动态SQL详解 #### 一、通过Library实现数据库连接管理 **1.1 Library的理解** 在BIRT(Business Intelligence and Reporting Tools)中,Library是一种用于集中管理和复用报表资源的重要机制...

    birt api动态创建表格

    在BIRT中,你可以通过API创建ReportDesign对象,并添加各种元素,如表格(Table)、图表(Chart)等。`CreateTable.java`可能包含了初始化表格模型、设置列宽、行高、字体样式以及数据绑定等操作。例如,它可能调用`...

    转:Birt接收JSP传递的参数值

    在IT行业中,BIRT(Business Intelligence and Reporting Tools)是一款开源的报表系统,广泛应用于Web应用程序中,用于生成复杂的业务报告。而JSP(JavaServer Pages)是Java平台上的动态网页技术,常用于构建用户...

    Birt与Echarts集成.pdf

    然后,通过JavaScript脚本组装对应的Echarts组件来渲染数据,这样一来,就能够在Birt报表中展示出动态生成的图表。集成的关键在于组装Echarts的option对象,这些对象定义了图表的样式、布局、数据等信息。组装函数...

    birt 报表动态数据源设置方法

    4. **在运行时应用动态数据源**:当报表运行时,BIRT会使用这些参数值填充到数据源的连接字符串中,从而动态地连接到指定的数据库。 5. **测试和验证**:确保动态数据源配置正确无误后,可以运行报表进行测试,观察...

    birt公用CSS样式

    在BIRT中,通过使用CSS,可以实现如表格样式、图表样式、页眉页脚样式、数据区域样式等自定义。这些样式可以应用于单元格、行、列、图表元素等各种报表组件,从而提供高度定制的视觉效果。 压缩包内的文件包括: 1....

    很适合初学者的BIRT报表教程

    BIRT支持JavaScript脚本,这使得你可以自定义报表行为,如计算值、过滤数据或执行其他复杂逻辑。在报表元素属性中,你可以找到脚本编辑器进行编写。 ### 7. 运行和预览报表 在设计完成后,点击"Preview"按钮可以...

    BIRT报表学习手册-中文

    在BIRT报表中,我们经常需要将表格隔行换颜色,以便更好地阅读和分析数据。实现方法是选择Row Detail一行,打开脚本编辑窗口,并在OnCreate事件中添加Javascript脚本,如下所示: if(row.__rownum % 2 == 0){ this...

    Birt文档及demo

    5. **脚本与表达式**:Birt允许在报表中使用JavaScript进行自定义逻辑,文档会解释如何编写和应用脚本,以及如何使用表达式来动态计算值。 6. **报表参数**:Birt支持参数化报表,用户可以根据需要输入参数值来筛选...

    birt数据集参数与列绑定实现

    2. 在BIRT报表设计中,可以通过拖放数据集字段到报表元素中来实现列绑定。这样,数据集的查询结果将自动填充到报表的相应位置。 3. 除了简单的列绑定,还可以实现复杂的表达式绑定,比如计算列、条件格式化等。 **...

    birt报表详细中文文档

    通过这份“birt中文帮助文档”,用户可以从基础概念到高级特性的深入理解BIRT,学习如何设计、调试、部署和管理报表,提升数据分析和呈现的能力。文档中应包含了详细的步骤说明、示例代码和最佳实践,是BIRT初学者和...

    birt 脚本数据库连接

    介绍birt的脚本数据库连接 在web项目中把数据库连接放在web里面

    报表工具Birt开发文档

    2. **脚本和事件**:Birt支持JavaScript脚本,开发者可以通过脚本来控制报表行为,如计算、过滤、交互事件响应等。 3. **模板和样式**:学习如何创建和管理样式表,以实现统一的报表外观和主题。 4. **调度和自动...

    birt中文官方资料

    6. **部署与运行**:BIRT报表可以嵌入到Web应用中,通过Servlet或JavaServer Pages (JSP)来运行。此外,还可以通过独立的BIRT Viewer应用程序进行离线查看。 7. **插件体系**:BIRT的开放性使得开发者可以创建...

Global site tag (gtag.js) - Google Analytics