`
www-hello
  • 浏览: 100438 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Flex DataGrid通用查询组件

    博客分类:
  • flex
阅读更多

本组件需要"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);

这两句来实现具体的要求。

 

1
3
分享到:
评论

相关推荐

    Flex 自定义Datagrid的ItemRender

    在Flex开发中,数据网格(Datagrid)是用于展示数据集合的强大组件,它允许用户以表格形式查看和操作数据。然而,Datagrid的默认渲染器可能无法满足所有复杂的需求,这时我们就需要自定义ItemRender来扩展其功能。...

    flex做的datagrid留言板

    综上所述,"flex做的datagrid留言板"是一个利用Flex组件和Web服务技术构建的交互性Web应用,它结合了数据展示、用户交互和数据库操作,为用户提供了一个方便的在线留言平台。在开发过程中,需要熟练掌握Flex的组件...

    flex3+component组件.pdf

    文档中列举了大量组件和控件,如通用控件(General controls),包括了Alert(警告框)、ColorPicker(颜色选择器)、ComboBox(下拉列表框)等;数据控件(Data controls),如DataGrid(数据网格)、TileList...

    Flex 3 组件实例与应用(2009版)

    ### Flex 3 组件实例与应用(2009版) #### 一、概述 《Flex 3 组件实例与应用》是一本针对初学者学习Adobe Flex 3框架及其组件的指南书籍。这本书由作者Dason编写,内容覆盖了Flex 3中的多种组件及其用法,并通过...

    Flex UI组件使用全集

    ### Flex UI组件使用全集详解 #### 概述 本文档是基于阿树对Adobe Flex UI组件库的全面整理,并结合Adobe主页上提供的各种组件代码示例进行深度解析。Flex是一种用于构建高度交互式的Web应用的框架,尤其适用于创建...

    《Flex 3 组件实例与应用(2009版)》(PDF)

    《Flex 3 组件实例与应用(2009版)》是一本深入解析Adobe Flex 3框架下组件使用与实践的专业书籍。本书由Dason精心整理于2009年2月,全面覆盖了Flex 3中的各种控件、容器、数据可视化组件以及效果、视图状态和过渡...

    Flex Data Grid Exporter

    1. **Flex Data Grid**:Flex Data Grid,也称为MX:DataGrid,是Adobe Flex框架中的一个组件,用于显示和操作大量结构化数据。它提供了可定制的列、排序、筛选等功能,让用户能够有效地查看和操作表格数据。 2. **...

    Flex开发实例

    - Flex提供了大量内置组件,如按钮、文本框等,这些组件可用于快速构建用户界面。 **13. 多页面(States)** - Flex支持状态管理,允许应用程序根据用户操作动态改变界面布局。 **14. ActionScript基础知识** - ...

    flex3的cookbook书籍完整版dpf(包含目录)

    使用Flex组件工具包创建组件 21.2节.在Flash中使用ContainerMovieClip创建Flex容器 21.3节.导入FlashCS3的组件 21.4节.认识Cairngorm小型结构 21.5节.创建Cairngorm视图、事件和模型 21.6节.创建Cairngorm命令和事务...

    flex控件讲解

    ### Flex控件详解 ...以上介绍的Flex控件都是开发过程中常用的组件,通过合理运用这些控件,可以极大地提升应用的功能性和用户体验。希望这些详细的信息能帮助开发者更好地理解和掌握Flex控件的使用技巧。

Global site tag (gtag.js) - Google Analytics