本组件需要"Flex翻页控件
",我的另一篇文章有这个组件的详细代码 http://lj-zhu.iteye.com/admin/blogs/720582
.
在进行flex编程时,经常会用到在dataGrid中分布显示数据,但是在每个页面中都写一遍查询,显示,控制翻页的代码,既烦琐,又不美观,于是我就写一个比较通用的查询组件。
代码CommonQueryComponent.as:
package cn.zlj.component
{
import mx.collections.ArrayCollection;
import mx.controls.DataGrid;
import mx.rpc.events.ResultEvent;
import mx.rpc.remoting.mxml.Operation;
import mx.rpc.remoting.mxml.RemoteObject;
import cn.zlj.event.MyEvent;
/**
* 通用翻页组件
*/
public class CommonQueryComponent
{
private var _remoteObject:RemoteObject; //远程对象
private var _queryCondition:Object; //查询条件
private var _pager:FlexPager; //分页控件
private var _dg:DataGrid; //数据显示控件
private var queryCountMethod:Operation; //查询记录数的方法
private var queryListMethod:Operation; //查询列表的方法
//查询记录数的方法名
public function set queryCountOperation(queryCountMethodName:String):void
{
queryCountMethod=Operation(_remoteObject.getOperation(queryCountMethodName));
queryCountMethod.addEventListener(ResultEvent.RESULT, countResultHandler);
}
//查询列表的方法名
public function set queryListOperation(queryListOperationName:String):void
{
queryListMethod=Operation(_remoteObject.getOperation(queryListOperationName));
queryListMethod.addEventListener(ResultEvent.RESULT, listResultHandler);
}
//list容器
public function set dataContainer(dg:DataGrid):void
{
_dg=dg;
//BindingUtils.bindProperty() //动态绑定
}
//list容器
public function set flexPager(pager:FlexPager):void
{
_pager=pager;
_pager.addEventListener(MyEvent.PAGE_CHANGED, pageChangedHandler);
}
//构造函数
public function CommonQueryComponent(remoteObject:RemoteObject)
{
//调用后台java的对象
_remoteObject=remoteObject
}
//处理查询记录数返回的结果
private function countResultHandler(event:ResultEvent):void
{
var count:int=int(event.result);
_pager.recordCount=count;
if (count > 0)
{
//查询member数据
queryList(_pager.pageSize, 0);
}
else
{
var dgProvider:ArrayCollection=ArrayCollection(_dg.dataProvider);
//清空数据
if (dgProvider != null)
{
(_dg.dataProvider as ArrayCollection).removeAll();
}
}
}
//处理查询记录列表返回的结果
private function listResultHandler(event:ResultEvent):void
{
_pager.enabled=true;
_dg.dataProvider=ArrayCollection(event.result);
}
//查询
public function query(queryCondition:Object):void
{
if (queryCondition == null)
{
return;
}
_pager.enabled=false;
_queryCondition=queryCondition;
queryCountMethod.send(_queryCondition);
}
//查询列表
public function queryList(pageSize:int, rowFrom:int):void
{
//翻页skipRows
_queryCondition.skipRows=rowFrom;
//一页最大记录数
_queryCondition.rowRecords=pageSize;
_pager.enabled=false;
queryListMethod.send(_queryCondition);
}
//翻页处理
private function pageChangedHandler(event:MyEvent):void
{
if(_queryCondition == null) {
return;
}
var skipRows:int=event.eventData.rowFrom
var pageSize:int=event.eventData.pageSize
queryList(pageSize, skipRows);
}
}
}
使用方法也是很简单的:
//查询组件
private var queryer:CommonQueryComponent;
//module的creationComplete事件
private function init():void
{
//查询组件
//queryLogic:RemoteObject,用来调用后台查询
queryer=new CommonQueryComponent(queryLogic);
//显示数据的dataGrid
queryer.dataContainer=dg1;
//页面组件
queryer.flexPager=pager;
//后台java类中查询总计录数的方法的名字
queryer.queryCountOperation="queryConut";
//后台java类中查询一页数据的方法的名字
queryer.queryListOperation="queryList";
}
//根据条件查询
private function query():void
{
//得到查询条件
condition=getQueryCondition();
//查询
queryer.query(condition);
}
一切OK。
补充:
这个组件中的查询条件必须是个类,而且还必须有skipRows(分页中的第n条记录)和pageSize(一页的记录数),
可能对有些应用来说有些限制。
可以通过修改
queryCountMethod.send(_queryCondition);
queryListMethod.send(_queryCondition);
这两句来实现具体的要求。
分享到:
相关推荐
在Flex开发中,数据网格(Datagrid)是用于展示数据集合的强大组件,它允许用户以表格形式查看和操作数据。然而,Datagrid的默认渲染器可能无法满足所有复杂的需求,这时我们就需要自定义ItemRender来扩展其功能。...
综上所述,"flex做的datagrid留言板"是一个利用Flex组件和Web服务技术构建的交互性Web应用,它结合了数据展示、用户交互和数据库操作,为用户提供了一个方便的在线留言平台。在开发过程中,需要熟练掌握Flex的组件...
文档中列举了大量组件和控件,如通用控件(General controls),包括了Alert(警告框)、ColorPicker(颜色选择器)、ComboBox(下拉列表框)等;数据控件(Data controls),如DataGrid(数据网格)、TileList...
### Flex 3 组件实例与应用(2009版) #### 一、概述 《Flex 3 组件实例与应用》是一本针对初学者学习Adobe Flex 3框架及其组件的指南书籍。这本书由作者Dason编写,内容覆盖了Flex 3中的多种组件及其用法,并通过...
### Flex UI组件使用全集详解 #### 概述 本文档是基于阿树对Adobe Flex UI组件库的全面整理,并结合Adobe主页上提供的各种组件代码示例进行深度解析。Flex是一种用于构建高度交互式的Web应用的框架,尤其适用于创建...
《Flex 3 组件实例与应用(2009版)》是一本深入解析Adobe Flex 3框架下组件使用与实践的专业书籍。本书由Dason精心整理于2009年2月,全面覆盖了Flex 3中的各种控件、容器、数据可视化组件以及效果、视图状态和过渡...
1. **Flex Data Grid**:Flex Data Grid,也称为MX:DataGrid,是Adobe Flex框架中的一个组件,用于显示和操作大量结构化数据。它提供了可定制的列、排序、筛选等功能,让用户能够有效地查看和操作表格数据。 2. **...
使用Flex组件工具包创建组件 21.2节.在Flash中使用ContainerMovieClip创建Flex容器 21.3节.导入FlashCS3的组件 21.4节.认识Cairngorm小型结构 21.5节.创建Cairngorm视图、事件和模型 21.6节.创建Cairngorm命令和事务...
### Flex控件详解 ...以上介绍的Flex控件都是开发过程中常用的组件,通过合理运用这些控件,可以极大地提升应用的功能性和用户体验。希望这些详细的信息能帮助开发者更好地理解和掌握Flex控件的使用技巧。