当前位置:  编程技术>综合
本页文章导读:
    ▪第十章 图表(续)      10.4 图表的动态设置与异步刷新 首先我们实现一个jsp输入框与birt的异步刷新。 新建一个报表,取名TopNPercent.rptdesign,空白模板,sql查询结果集。 新建数据源MyDataSource,采用BIRT设计器自带.........
    ▪C++基类和派生类的构造析构顺序      构造的时候先调用基类的构造函数,再调用派生类的构造函数 析构的时候先调用派生类的析构函数,再调用基类的析构函数 看一个例子: #include "stdafx.h" class Base { public: Base() { .........
    ▪Selenium 一个用于Web应用程序测试的强大工具      Selenium测试直接运行在浏览器中,就像真正的用户在操作一样,这对项目经理,QA,tester 来说 无疑是一个宝贝。 更易于项目测试人员和开发人员的沟通和提高效率。 目前支持的浏览器包括IE、M.........

[1]第十章 图表(续)
    来源: 互联网  发布时间: 2013-11-10
10.4 图表的动态设置与异步刷新

首先我们实现一个jsp输入框与birt的异步刷新。

新建一个报表,取名TopNPercent.rptdesign,空白模板,sql查询结果集。

新建数据源MyDataSource,采用BIRT设计器自带的例子数据库:

驱动程序类:org.eclipse.birt.report.data.oda.sampledb.Driver (Classic Models Inc. SampleDB Driver)

Database URL:jdbc:classicmodels:sampled

用户名:ClassicModels

新建数据集Customer Sales

select CUSTOMERS.CUSTOMERNAME,

       CUSTOMERS.CUSTOMERNUMBER,

       sum(ORDERDETAILS.QUANTITYORDERED *

       ORDERDETAILS.PRICEEACH) as CUSTOMERTOTAL

from CUSTOMERS, ORDERS, ORDERDETAILS

where CUSTOMERS.CUSTOMERNUMBER = ORDERS.CUSTOMERNUMBER

and ORDERS.ORDERNUMBER = ORDERDETAILS.ORDERNUMBER

group by CUSTOMERS.CUSTOMERNAME, CUSTOMERS.CUSTOMERNUMBER

order by CUSTOMERTOTAL

新建两个参数:

参数:Top Count

提示文本:Number of Customers for Top "N" Chart

数据类型:十进制

显示类型:文本框

帮助文本:Enter the number of customers you wish included in the top "N" graph of the report

默认值:5

参数:Top Percentage

提示文本:Percentage of Customers for Top N% Listing

数据类型:十进制

显示类型:文本框

帮助文本:Enter the percentage of customers you wish included in the top N% listing of the report

默认值:25

在报表编辑器中插入三个网格,分别为1行2列,2行1列,2行1列。

最上面的网格,左边一列插入一个图片,格式为嵌入,地址为:C:\Documents and Settings\pclenahan\My Documents\ClassicModels\logos\Classic-Models-Full-M.jpg

右边一列插入三个文本,分别为:

文本:Classic Models, Inc. 字体格式:蓝色字体,加粗,大小20点

HTML格式动态文本:701 Gateway Boulevard, San Francisco, CA 94107

HTML格式动态文本:Top <VALUE-OF>params["Top Count"]</VALUE-OF> / Top <VALUE-OF>params["Top Percentage"]</VALUE-OF>% Customers by Revenue 字体格式:黑色字体,加粗,大小16点

中间插入图表:

第一行插入文本:

HTML格式动态文本:Top <VALUE-OF>params["Top Count"]</VALUE-OF> Customers

第二行插入图表:

使用以下来源的数据- Customer Sales,类别(X)系列选择可用列绑定-图表- row["CUSTOMERNAME"],值(Y)系列选择可用列绑定-图表- row["CUSTOMERTOTAL"].

筛选器:row["CUSTOMERTOTAL"],Top N, params["Top Count"]

在第二行图表上建立书签:"TopSalesChart"

最下面的网格:

第一行插入文本:

HTML格式动态文本:Top <VALUE-OF>params["Top Percentage"]</VALUE-OF>% Customers (sorted by name)

第二行插入一个1行3列的表:分别绑定dataSetRow["CUSTOMERNAME"],dataSetRow["CUSTOMERNUMBER"],dataSetRow["CUSTOMERTOTAL"],

新建过滤器:row["CUSTOMERTOTAL"],上百分比,params["Top Percentage"]

在最下面的网格上新建书签:"TopPercent"

最终预览的效果:

新建JSP,名称为mashup.jsp,内容如下:

 

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib uri="/birt.tld" prefix="birt" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
	<meta http-equiv="Content-Language" content="en-us">
	<title>BIRT JSP Tag Lib Mashup</title>
	<style>
		.pageHeader {
			position: absolute;
		    width: 1020px;
		    text-align: center;
			color: #224499;
			font-size: xx-large;
			font-weight: bold;
		}
		
		.mashupContainer {
			position: absolute;
			font-family: Verdana, Tahoma, Arial;
			font-size: 11px;
			border: 1px solid #87AFDA;
			margin: 3px;
		}
		
		.mashupTitle {
			position: absolute;
			background: #D4E6FC;
			font-size: 14px;
			font-weight: bold;
			color: #224499;
			padding: 3px;
			border-bottom: 1px solid #87AFDA;
		}
		
		.mashupContent {
			position: absolute;
			padding: 3px;
		}
	</style>
	<script type="text/javascript">
		function populateDefaults(elem){
			txtBox = document.getElementById(elem);
			if(txtBox.value == ""){
				if(elem == "TopN"){
					txtBox.value = 5;
				}else if(elem == "TopP"){
					txtBox.value = 25;
				}
			}
		}
	
		function refreshTag(iframeName, elem, paramName) {
			var c = document.getElementById(elem).value;
			origUrl = window.frames[iframeName].location.toString();
			var pos = origUrl.indexOf('&__overwrite=true&Top');
			if (pos > 0) {
				window.frames[iframeName].location = origUrl.substr(0, pos)	+ '&__overwrite=true&' + paramName + '=' + c;
			} else {
				window.frames[iframeName].location = origUrl
						+ '&__overwrite=true&' + paramName + '=' + c;
			}
		}
	</script>
</head>
<body>
	
		<div class="mashupContainer"  id="salesDataContainer" style="z-index: 1000; top: 50px; left: 50px; height: 400px; width: 320px;">
		<div class="mashupTitle" style="z-index: -1; width: 98%; height: 20px;">Report Parameters</div>
		<div class="mashupContent" id="SalesData" style="padding-top: 20px; z-index: -1; top: 24px; left: 0px; width; 320px%; height: 300px;">
			TOP COUNT PARAMETER
			<input type="Text" id="TopN" name="TopN" onblur="populateDefaults('TopN')">
			<br><br>
			<INPUT TYPE="button" NAME="button" Value="Refresh Chart" onClick="refreshTag('birtViewer', 'TopN', 'Top%20Count')" > 
			<br><br>
			<br><br>
			TOP PERCENT PARAMETER
			<input type="Text" id="TopP" name=&      
    
[2]C++基类和派生类的构造析构顺序
    来源: 互联网  发布时间: 2013-11-10

构造的时候先调用基类的构造函数,再调用派生类的构造函数

析构的时候先调用派生类的析构函数,再调用基类的析构函数


看一个例子:

#include "stdafx.h"
 class Base
 {
 public:
 	Base()
 	{
 		printf("Base construct!\n");
 	}
 	virtual ~Base()
 	{
 		printf("Base release!\n");
 	}
 };
 
 class Sub : public Base
 {
 public:
 	Sub()
 	{
 		printf("Sub construct!\n");
 	}
 	~Sub()
 	{
 		printf("Sub release!\n");
 	}
 };
 
 class Factory
 {
 public:
 	Base *CreateSub()
 	{
 		return new Sub();
 	}
 };
 
 
 int _tmain(int argc, _TCHAR* argv[])
 {
 	Factory fy;
 	Base *pBase = fy.CreateSub();
 	delete pBase;
 	pBase = NULL;
 	return 0;
 }

输出结果:

Base construct!
 Sub construct!
 Sub release!
 Base release!
 请按任意键继续. . .


注意,本例中如果基类析构函数不加virutal,本例中的情况就不会调用派生类的析构函数。

除非把pBase再转为Sub*类型。


作者:iuhsihsow 发表于2013-1-9 9:23:19 原文链接
阅读:91 评论:0 查看评论

    
[3]Selenium 一个用于Web应用程序测试的强大工具
    来源:    发布时间: 2013-11-10

Selenium测试直接运行在浏览器中,就像真正的用户在操作一样,这对项目经理,QA,tester 来说 无疑是一个宝贝。

更易于项目测试人员和开发人员的沟通和提高效率。

目前支持的浏览器包括IE、Mozilla Firefox、Mozilla Suite等。

这个工具的主要功能包括:测试与浏览器的兼容性—测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。

测试系统功能—创建衰退测试检验软件功能和用户需求。

支持自动录制动作和自动生成。

Net、Java、Perl等不同语言的测试脚本。

Selenium 是ThoughtWorks专门为Web应用程序编写的一个验收测试工具。


Selenium IDE:一个Firefox插件,可以录制用户的基本操作,生成测试用例。随后可以运行这些测试用例在浏览器里回放,可将测试用例转换为其他语言的自动化脚本。


官方文档解析

http://seleniumhq.org/docs/02_selenium_ide.jsp

 



已有 0 人发表留言,猛击->>这里<<-参与讨论


ITeye推荐
  • —软件人才免语言低担保 赴美带薪读研!—




    
最新技术文章:
▪error while loading shared libraries的解決方法    ▪版本控制的极佳实践    ▪安装多个jdk,多个tomcat版本的冲突问题
▪简单选择排序算法    ▪国外 Android资源大集合 和个人学习android收藏    ▪.NET MVC 给loading数据加 ajax 等待loading效果
▪http代理工作原理(3)    ▪关注细节-TWaver Android    ▪Spring怎样把Bean实例暴露出来?
▪java写入excel2007的操作    ▪http代理工作原理(1)    ▪浅谈三层架构
▪http代理工作原理(2)    ▪解析三层架构……如何分层?    ▪linux PS命令
▪secureMRT Linux命令汉字出现乱码    ▪把C++类成员方法直接作为线程回调函数    ▪weak-and算法原理演示(wand)
▪53个要点提高PHP编程效率    ▪linux僵尸进程    ▪java 序列化到mysql数据库中
▪利用ndk编译ffmpeg    ▪活用CSS巧妙解决超长文本内容显示问题    ▪通过DBMS_RANDOM得到随机
▪CodeSmith 使用教程(8): CodeTemplate对象    ▪android4.0 进程回收机制    ▪仿天猫首页-产品分类
jquery iis7站长之家
▪Office 2010下VBA Addressof的应用    ▪一起来学ASP.NET Ajax(二)之初识ASP.NET Ajax    ▪更改CentOS yum 源为163的源
▪ORACLE 常用表达式    ▪记录一下,AS3反射功能的实现方法    ▪u盘文件系统问题
▪java设计模式-观察者模式初探    ▪MANIFEST.MF格式总结    ▪Android 4.2 Wifi Display核心分析 (一)
▪Perl 正则表达式 记忆方法    ▪.NET MVC 给loading数据加 ajax 等待laoding效果    ▪java 类之访问权限
▪extjs在myeclipse提示    ▪xml不提示问题    ▪Android应用程序运行的性能设计
▪sharepoint 2010 自定义列表启用版本记录控制 如...    ▪解决UIScrollView截获touch事件的一个极其简单有...    ▪Chain of Responsibility -- 责任链模式
▪运行skyeye缺少libbfd-2.18.50.0.2.20071001.so问题    ▪sharepoint 2010 使用sharepoint脚本STSNavigate方法实...    ▪让javascript显原型!
▪kohana基本安装配置    ▪MVVM开发模式实例解析    ▪sharepoint 2010 设置pdf文件在浏览器中访问
▪spring+hibernate+事务    ▪MyEclipse中文乱码,编码格式设置,文件编码格...    ▪struts+spring+hibernate用jquery实现数据分页异步加...
▪windows平台c++开发"麻烦"总结    ▪Android Wifi几点    ▪Myeclipse中JDBC连接池的配置
▪优化后的冒泡排序算法    ▪elasticsearch RESTful搜索引擎-(java jest 使用[入门])...    ▪MyEclipse下安装SVN插件SubEclipse的方法
▪100个windows平台C++开发错误之七编程    ▪串口转以太网模块WIZ140SR/WIZ145SR 数据手册(版...    ▪初识XML(三)Schema
▪Deep Copy VS Shallow Copy    ▪iphone游戏开发之cocos2d (七) 自定义精灵类,实...    ▪100个windows平台C++开发错误之八编程
▪C++程序的内存布局    ▪将不确定变为确定系列~Linq的批量操作靠的住...    ▪DIV始终保持在浏览器中央,兼容各浏览器版本
▪Activity生命周期管理之三——Stopping或者Restarti...    ▪《C语言参悟之旅》-读书笔记(八)    ▪C++函数参数小结
▪android Content Provider详解九    ▪简单的图片无缝滚动效果    ▪required artifact is missing.
▪c++编程风格----读书笔记(1)    ▪codeforces round 160    ▪【Visual C++】游戏开发笔记四十 浅墨DirectX教程...
▪【D3D11游戏编程】学习笔记十八:模板缓冲区...    ▪codeforces 70D 动态凸包    ▪c++编程风格----读书笔记(2)
▪Android窗口管理服务WindowManagerService计算Activity...    ▪keytool 错误: java.io.FileNotFoundException: MyAndroidKey....    ▪《HTTP权威指南》读书笔记---缓存
▪markdown    ▪[设计模式]总结    ▪网站用户行为分析在用户市场领域的应用
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3