公司在数据报表方面使用的都是flex,以前在项目里没有接触过,正好这次看 看,瞅了下,只能用一个强悍来形容了,而且动态的效果之类的也挺漂亮,唯一不足的是,不知道为什么,在我本机做一些实验的时候老师内存溢出,开始以为是自 己
问题,但是后来发现在Adobe的一些sample上也一样,有待研究.:)
说明:
例子主要
演示的是在java下如何通过flex来调用数据库内容,并且含有分页,没有使用
web service(其实想使用的话也很简单,无非是数据绑定的不同而已),而是直接在flex下通过RemoteObject来生成实例调用相关方法获取数 据,很简单,应该一看就很明了,例子中如果有描述不正确的地方,还望Email本人,共同研究,谢谢.
功能:
利用flex分页显示数据内容,并且可以通过滑动条HSlider来轻松拖动页面数,其中包含了对DataGrid的使用,hslider的使用,以及如何对数据的返回值进行处理
问题:
1.有个很大的问题就是,我在My
sql下,1千万数据以上,没有关联,没有约束,单独一个表的情况下,有时在翻页时会导致假死状况,这种情况下有时会给 用户一种错觉,认为自己已经点过了,但是页面却卡在了那里,想通过加载一个Loading来让用户知道正在加载,但是没有找到很好的办法实现,还忘有经验 的朋友提示一二.
2.另外一个问题是,当我把页面跳转到了另外一个页面时,怎样可以使HSlider的滚动条自动跳到指定的值上面?我用HSlider的value方法指定值,但是很不幸,滑动条没有反应.:(
其他:
本来想把
源代码打包呢,结果一打包,看了下10多M,算了,懒得传了,主要代码其实没多少,jar包之类的太大了,我没有自己添加任何jar包,主要都是 用到的hibernate和flex自带的jar包,这个可以在MyEclipse中很easy的导入进去,同时还要说明一点,别忘了安装基于 Eclipse的Flex Bulider插件.:).
正好写的也有一个利用flex读取rss的东东,一并放上来好了.
演示图片:
环境:
MyEclipse6.0.1GA
Jdk1.6
Tomcat6
Hibernate3
Flex3
数据表结构:
CREATE TABLE `table` (
`id` int(11) NOT NULL auto_increment,
`username` varchar(20) NOT NULL,
`pass
word` varchar(20) NOT NULL,
`create_date` timestamp NULL default CURRENT_TIMESTAMP,
`t_blob` blob COMMENT '测试blob字段',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED;
代码(此处主要列举核心代码,像Hibernate实体类,Factory就不列举了):
xml version="1.0" encoding="utf-8"?>
global{
fontSize:12px;
}
import mx.events.SliderEvent;
import mx.collections.ArrayCollection;
import mx.rpc.events.ResultEvent;
import mx.controls.Alert;
import mx.utils.ArrayUtil;
[Bindable]
public var userList:Array;
public var maxRow:int = 100;//每页多少条
public var page:int;//当前第几页
public var totalPage:int;//共多少页
public var count:int;//共多少条数据
//主进入口,判断是否带有参数传递
private function callMain():void{
var p:String = this.parameters.page;
if(null==p){
p = "1";
}
page = int(p);
callUser(page);//获取用户数据
}
//调用java类获取用户数据
private function callUser(page:int):void{
userDAO.find(page,maxRow);
userDAO.addEventListener(ResultEvent.RESULT,getUserResult);
}
//监听返回结果
private function getUserResult(e:ResultEvent):void{
var tempList:ArrayCollection = e.result as ArrayCollection;
totalPage = int(tempList.getItemAt(1,1));//获取总页数
count = int(tempList.getItemAt(0,1));//获取