`

Flex3 自定义DataGrid分页控件component

阅读更多
网上看了一下有关flex DataGrid 自定义分页控件的应用,大部分是对客户端现成的数据进行分页,如果结合数据库来显示的话,数据量少,其实不必要分页,利用DataGrid的下拉滚动条足够,如果数据量非常大,又不大可能把所有的数据传到客户端,再对这些数据分页。只能是传到客户端的数据就只有一页的数据。下面示意如何用blaseds和flex来实现分页。(部分代码从网上拿来

1.自定义分页事件
package com.yonghong.controller.events
{
import flash.events.Event;

public class PageChangeEvent extends flash.events.Event
{
public function PageChangeEvent(pageindex:int,pagesize:int)
{
super("PageChange");
PageIndex= pageindex;
PageSize =pagesize;
}
public var PageIndex:int=0;
public var PageSize:int=0;

}
}
2.自定义分页栏
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml"  width="466" height="40">
<mx:Metadata>

    [Event(name="PageChange", type="com.yonghong.controller.events.PageChangeEvent",bubbles="true",cancelable="true")]

</mx:Metadata>

<mx:Button click="method_le()"  id="c_le" enabled="false" x="10" y="10" fontFamily="Georgia" width="24" height="24" minWidth="24" minHeight="24">
<mx:icon>@Embed('first.png')</mx:icon>
</mx:Button>
<mx:Button click="method_l()" id="c_l" enabled="false" x="42" y="10" fontFamily="Georgia" width="24" height="24" minWidth="24" minHeight="24">
<mx:icon>@Embed('pre.png')</mx:icon>
</mx:Button>
<mx:ComboBox rowCount="10" change="method_select()" id="c_select" enabled="false" x="74" y="10" width="54"></mx:ComboBox>
<mx:Button click="method_r()" id="c_r" enabled="false" x="136" y="10" fontFamily="Georgia" width="24" height="24" minWidth="24" minHeight="24">
<mx:icon>@Embed('next.png')</mx:icon>
</mx:Button>
<mx:Button click="method_re()" id="c_re" enabled="false" x="168" y="10" fontFamily="Georgia" width="24" height="24" minWidth="24" minHeight="24">
<mx:icon>@Embed('last.png')</mx:icon>
</mx:Button>
<mx:Script>
<![CDATA[
import com.yonghong.controller.events.PageChangeEvent;

import mx.controls.Alert;
private var mRecordCount:int=0;
private var mPageSize:int =20;
private var mPageIndex:int =0;
private var mPageCount:int = 0;



public function method_l():void
{
mPageIndex=mPageIndex-1;
SetState();
OnPageChange();
}
public function method_le():void
{
mPageIndex =0;
SetState();
OnPageChange();
}
public function method_r():void
{
mPageIndex=mPageIndex+1;
SetState();
OnPageChange();
}
public function method_re():void
{
mPageIndex=mPageCount-1;
SetState();
OnPageChange();
}
public function method_select():void
{
mPageIndex = c_select.selectedItem.data;
SetState();
OnPageChange();
}
public function get PageIndex():int
{
return mPageIndex;
}


//设置记录总数
public function set RecordCount(count:int):void
{
mRecordCount= count;
if(count >0)
{
SetState();
}
}
private function SetState():void
{
if(mRecordCount%mPageSize > 0)
{
mPageCount = mRecordCount/mPageSize+1;
}
else
{
mPageCount = mRecordCount/mPageSize;
}
var pages:Array = new Array();
for(var i:int =1;i<=mPageCount;i++)
{
pages.push( {label:i.toString(), data:i-1});
}

c_select.dataProvider= pages;
c_select.selectedIndex= mPageIndex;
if(mPageCount>1)
{
c_select.enabled=true;
c_l.enabled=true;
c_le.enabled=true;
c_r.enabled=true;
c_re.enabled=true;
if(mPageIndex==0)
{
c_l.enabled=false;
c_le.enabled=false;
}
if(mPageIndex == mPageCount-1)
{
c_r.enabled=false;
c_re.enabled=false;
}
}
else
{
c_select.enabled=false;
c_l.enabled=false;
c_le.enabled=false;
c_r.enabled=false;
c_re.enabled=false;
}
pageinfo.text="Records:" + mRecordCount+"/" + mPageCount+"pages";

}
//获取记录总数
public function get RecordCount():int
{
return mRecordCount;
}
//打开分页控件
public function Open():void{
mPageIndex =0;
OnPageChange();
}
//刷新当前页面
public function Refresh():void
{
OnPageChange();
}
private function OnPageChange():void
{
var e:PageChangeEvent = new  PageChangeEvent(mPageIndex,
mPageSize);
dispatchEvent(e);
}

]]>
</mx:Script>
<mx:Label x="200" y="10" width="175" fontSize="12" id="pageinfo"/>
</mx:Canvas>

3.如何应用此控件(关键)

<?xml version="1.0" encoding="utf-8"?>
<mx:Application  initialize="oninit()" xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical"  xmlns:ns2="com.yonghong.components.*">


<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.rpc.events.ResultEvent;
import com.yonghong.model.vo.PatientRecordVO;
import com.yonghong.model.service.RegistrationManagerService;
import com.yonghong.controller.events.PageChangeEvent;

import mx.controls.Alert;
import flash.events.Event;

private var registerManagerService:RegistrationManagerService=new RegistrationManagerService();

private var datas:Array = new Array();
function oninit():void
{

pagebar1.Open();
}

function findPatientReocordHandler(event:ResultEvent):void{
var datas:ArrayCollection=event.result as ArrayCollection;
pagebar1.RecordCount =1000;
pagebar1.Open();
}

function pagechange(e:PageChangeEvent):void
{
registerManagerService.findPatientRecordPaging(new PatientRecordVO(),e.PageIndex,20,findPatientReocordHandler2);
}
function findPatientReocordHandler2(event:ResultEvent):void{

pagebar1.RecordCount =1000;
datalist.dataProvider=event.result;
}
]]>
</mx:Script>
<mx:DataGrid width="100%" id="datalist">
<mx:columns>
<mx:DataGridColumn headerText="no" dataField="no"/>
<mx:DataGridColumn headerText="surname" dataField="surname"/>

</mx:columns>
</mx:DataGrid>
<ns2:PageBar id="pagebar1" PageChange="pagechange(event)" >
</ns2:PageBar>
</mx:Application>
分享到:
评论
1 楼 8526sun 2009-07-01  
                 

相关推荐

    WPF 分页DataGrid 分页控件的实现

    8. **自定义外观**:根据需求,你可以自定义DataGrid的样式,以及分页控件的外观和交互。 以上就是使用C#在WPF中实现DataGrid分页的基本流程。实际项目中可能还需要考虑其他细节,如错误处理、性能优化等。在wpf....

    WPF中的DataGrid、Button、ComboBox等样式+DataGrid分页控件

    在标题提到的“WPF中的DataGrid、Button、ComboBox等样式+DataGrid分页控件”中,我们将深入探讨这些关键组件以及如何自定义它们的样式和实现分页功能。 首先,DataGrid是WPF中用于展示和编辑表格数据的强大控件。...

    自定义用户分页控件_分页程存过程

    在本案例中,开发者创建了一个自定义的分页控件,而非使用预定义的控件如ASP.NET中的Pager或WinForms中的DataGrid,这样可以更灵活地根据项目需求进行定制。 接下来,我们关注C#中的委托。委托在C#中扮演着函数指针...

    使用Flex开发DataGrid分页控件应用支持客户端及服务端

    在Flex中,可以创建一个自定义组件来封装分页控件。例如,使用HBox和VRule布局按钮和链接栏,Button用于实现导航功能,LinkBar用于显示页码,ComboBox用于选择每页记录数。事件监听器如`navigateButtonClick`和`...

    flex dataGrid 分页控件

    这是我自己开发的一个dataGrid分页的控件,上传的资源是一个打成包的flex项目,这个控件在查询数据时是与后台进行实时交互的,表格的表头样式是重写皮肤类进行定义的,而隔行变色是通过css来实现的。其中最重要的...

    flex datagrid 分页控件源码

    下面将详细讲解Flex DataGrid的分页控件源码及其实现原理。 1. **Flex DataGrid基础** Flex DataGrid是Flex SDK中的一个组件,用于显示表格形式的数据。它可以处理各种数据源,如ArrayCollection、...

    .net分页控件,.net自定义分页控件

    .NET框架提供了一些内置的分页控件,如ASP.NET中的GridView和DataGrid,但这些控件可能无法满足开发者对于外观、功能或性能的特殊需求,因此,自定义分页控件的需求应运而生。 创建自定义分页控件涉及以下几个关键...

    ASP.NET中自定义DataGrid分页设置的实现

    ASP.NET 中自定义 DataGrid 分页设置的实现 在 ASP.NET 中,DataGrid 是一个常用的控件,用于显示数据列表。然而,DataGrid 的分页设置是 ASP.NET 开发中最常见的问题之一。在本文中,我们将实现 DataGrid 的个性化...

    C# Winform+devexpress 自定义分页控件

    在.NET开发环境中,C# WinForm应用经常需要处理大量数据,这时自定义分页控件显得尤为重要。"C# Winform+devexpress 自定义分页控件"是为了解决这个问题而设计的一种解决方案,它利用DevExpress组件库的强大功能,...

    自定义DataGrid分页块完美实现

    本话题将深入探讨如何自定义DataGrid的分页块,实现一个完美的分页效果。 DataGrid的分页功能默认提供了一些基本选项,如每页显示的记录数和页码导航。然而,这些默认设置可能无法满足所有需求,比如自定义样式、...

    WPF DataGrid分页功能

    在Windows Presentation Foundation (WPF) 中,`DataGrid` 是一个强大的控件,常用于显示和编辑表格数据。实现分页功能是提高大型数据集显示性能的重要手段,它能让用户更有效地浏览和管理大量信息。在本文中,我们...

    flex datagrid 前台 分页

    3. **用户界面**:创建分页控件,如页码选择器和记录数显示,通过事件监听来响应用户操作,更新DataGrid的数据。 4. **数据排序和过滤**:如果需要在前台进行数据排序或过滤,要确保这些操作不会影响到整个数据集,...

    Flex中DataGrid分页源码

    本文将详细解析使用AS3.0在Flex中实现DataGrid分页的功能,帮助你深入理解这一技术。 首先,Flex是Adobe开发的一个开放源代码框架,用于构建富互联网应用程序(RIA)。它提供了丰富的组件库,包括DataGrid,这是一...

    flex 自定义 datagrid 列头带组合框进行过滤

    这个主题——"flex 自定义 datagrid 列头带组合框进行过滤",涉及到的关键知识点包括Flex组件定制、DataGrid列头的扩展以及ComboBox控件的使用。 1. Flex组件定制: 在Flex中,我们可以使用MXML和ActionScript来...

    DataGrid模板列自定义控件

    在这些文件中,你应该能够找到关于DataGrid模板列和自定义控件的实现示例,以及依赖属性绑定的代码实例。 总结,DataGrid模板列自定义控件的使用是提升WPF应用界面功能性和用户体验的重要手段。通过结合依赖属性的...

    flex 自定义dataGrid渲染器.根据数据变色

    在Flex开发中,数据网格(DataGrid)是用于展示大量结构化数据的常用组件。它允许用户以表格形式查看和操作数据。然而,有时我们可能需要根据数据的特定值来改变DataGrid中单元格的样式,例如颜色。这就涉及到了...

    自定义Datagrid

    默认的分页可能无法满足所有需求,比如自定义每页显示的行数、自定义分页控件样式等。开发者可以通过实现自己的分页逻辑,结合数据虚拟化技术,确保只加载当前视图所需的记录,从而提高应用程序的响应速度。 该资源...

    WPF, datagrid 分页控件

    本篇将详细讲解如何在WPF中实现Datagrid的分页控件。 首先,了解基本概念。分页是将大数据集分割成较小的、可管理的部分,每次只显示一部分,用户可以通过翻页浏览整个数据集。在WPF Datagrid中,我们通常使用...

    DATAGRID分页控件

    标题提到的“DATAGRID分页控件”就是为了解决这个问题,它提供了对大量数据进行有效管理和浏览的能力。 1. **分页功能**:在`DataGridView`中实现分页通常需要自定义逻辑或使用第三方控件。基础的`DataGridView`...

    Flex 自定义Datagrid的ItemRender

    本文将深入探讨如何在Flex中自定义Datagrid的ItemRender,以实现按钮、单选、复选和日期等控件的集成。 首先,我们需要了解ItemRender的基本概念。ItemRenderer是Flex提供的一种机制,允许开发者为数据网格中的每一...

Global site tag (gtag.js) - Google Analytics