自定义组件
kelvin_DataGrid .mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas
xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="300" xmlns:local="*">
<mx:Script>
<![CDATA[
/*
因为是一次取出全部数据,所以适合数据量不会太大的情况。
加了一个pageSize,用来控制每页显示的行数,可以在调用这个组件的时候为pageSize属性赋值,
默认为每页显示10行数据,不需要为DataGrid指定高度。
*/
import mx.collections.ArrayCollection;
[Bindable]public var pageSize:int=10;//每页显示行数
[Bindable]private var totalPage:int=0;//总页数
[Bindable]private var
currentPage:int=0;//当前页
[Bindable]
public var
acAllData:ArrayCollection;//所有数据
[Bindable]
private var
acPageData:ArrayCollection=new ArrayCollection();//当前页数据
[Bindable]
public var
arrColumns:Array;//DataGrid列,在调用时需要为这个数组设置数据
//初始化
public function
init(value:ArrayCollection):void{
acAllData=value;
if(acAllData.length!=0 &&
acAllData!=null){
totalPage=Math.ceil(acAllData.length/pageSize);
loadData(0);
}else{
currentPage=0;
totalPage=0;
}
}
//加载数据
private function loadData(pageNum:int):void
{
if(pageNum>=0 &&
pageNum<totalPage){
acPageData.removeAll();
currentPage=pageNum;//重新为当前页的变量赋值
var
startIndex:int=pageNum*pageSize;//计算起始索引
for(var
i:int=0;i<pageSize &&
startIndex<acAllData.length;i++){
acPageData.addItem(acAllData[startIndex]);
startIndex++;
}
}
}
]]>
</mx:Script>
<mx:VBox x="0" y="0" width="100%" height="100%"
verticalGap="0" horizontalAlign="center" backgroundColor="white">
<mx:DataGrid id="customgrid" width="100%" dataProvider="{acPageData}"
columns="{arrColumns}" rowCount="{pageSize}"/>
<mx:HBox cornerRadius="12" borderStyle="solid" horizontalAlign="center"
verticalAlign="middle">
<mx:Text text="{'
第'+(totalPage>0?(currentPage+1):0)+'页/共'+totalPage+'页'+'
共'+(acAllData!=null?acAllData.length:0)+'条记录'}" fontSize="12"/>
<mx:LinkButton id="lbtnFirst" label="首页"
click="loadData(0)" enabled="{lbtnPrevious.enabled}"
fontSize="12"/>
<mx:LinkButton id="lbtnPrevious" label="上一页"
click="loadData(currentPage-1)" enabled="{currentPage!=0?true:false}"
fontSize="12"/>
<mx:LinkButton id="lbtnNext" label="下一页"
click="loadData(currentPage+1)"
enabled="{totalPage>(currentPage+1)?true:false}"
fontSize="12"/>
<mx:LinkButton id="lbtnLast" label="尾页"
click="loadData(totalPage-1)" enabled="{lbtnNext.enabled}"
fontSize="12"/>
<mx:NumericStepper id="nsPageNum"
stepSize="1" minimum="1" maximum="{totalPage}"
enabled="{lbtnJump.enabled}"/>
<mx:LinkButton id="lbtnJump"
label="跳转" click="loadData(nsPageNum.value-1)"
enabled="{totalPage>1?true:false}" fontSize="12"/>
</mx:HBox>
</mx:VBox>
</mx:Canvas>
调用test.xml
<?xml version="1.0"
encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
xmlns:local="*" creationComplete="creationComplete()">
<mx:Script>
<![CDATA[
import
mx.collections.ArrayCollection;
[Bindable]
private
var ac:ArrayCollection;
private function
creationComplete():void{
loadAcData();
}
//如果查询出来的数据为xml格式,调用这个方法
private function
loadXmlData(xml:XML):void{
ac=new
ArrayCollection();
for each(var item:Object in xml.Table){
//将Table换成XML中的根元素名称
ac.addItem(item);
}
dg.init(ac);
}
//查询出来的结果为数组,直接传递给init即可
private
function loadAcData():void{
ac=new
ArrayCollection();
//测试数据
for(var
i:int=0;i<35;i++){
var obj:Object=new
Object();
obj.photo_id=i.toString();
obj.photo_name="photo"+i;
ac.addItem(obj);
}
dg.init(ac);
}
]]>
</mx:Script>
<!--设置pageSize为8,表示每页显示8条记录,不设置默认显示10条记录-->
<local:kelvin_DataGrid id="dg" width="495" height="300"
pageSize="8" x="124" y="24">
<local:arrColumns><!--为这个标签设置DataGridColumn,指示在DataGrid上显示的列-->
<mx:DataGridColumn headerText="id" dataField="photo_id"/>
<mx:DataGridColumn headerText="name" dataField="photo_name"/>
</local:arrColumns>
</local:kelvin_DataGrid>
</mx:Application>
分享到:
相关推荐
实现Flex DataGrid的前台分页,首先需要确保数据源能够一次性加载所有数据。这可能意味着你需要有足够的内存来处理这些数据,否则可能会导致性能问题。在获取数据后,你可以使用DataGrid的`dataProvider`属性来绑定...
分页功能使得用户可以在不一次性加载所有数据的情况下浏览数据集,减轻了服务器的负担并提升了用户体验。在Flex中,我们可以通过设置Datagrid的pageSize属性和实现IList接口的数据源来实现分页。 动态绑定数据源是...
在Web应用程序中,一次性加载所有数据可能导致页面加载缓慢,消耗大量内存,而分页则能有效地解决这个问题,让用户逐步浏览数据,减少系统负担。 Flex DataGrid是一个强大的表格组件,它允许展示和操作数据集中的列...
在处理大数据集时,分页是必不可少的,因为它能提高用户体验,避免一次性加载所有数据导致的性能问题。下面将详细讲解Flex DataGrid的分页控件源码及其实现原理。 1. **Flex DataGrid基础** Flex DataGrid是Flex ...
仅渲染可视区域内的行,而不是一次性加载所有数据,从而减少内存占用和提升渲染速度。 6. **样式和布局**:分页组件的样式和布局也是用户体验的重要部分。可以自定义按钮样式,设置分页栏的位置等。 在提供的文件...
分页是大型数据集管理中的关键功能,它允许用户一次只查看一部分数据,而不是一次性加载所有记录。在Flex中,我们可以使用DataGrid结合Flex提供的Pagination控件或者自定义分页实现这一目标。 1. **使用Built-in ...
这是我自己开发的一个dataGrid分页的控件,上传的资源是一个打成包的flex项目,这个控件在查询数据时是与后台进行实时交互的,表格的表头样式是重写皮肤类进行定义的,而隔行变色是通过css来实现的。其中最重要的...
然而,如果数据集非常大,一次性加载所有数据可能会导致性能问题。这时,我们就需要实现分页,每次只加载一部分数据。 实现`DataGrid`分页的关键在于数据源的处理。通常,我们可以使用`PagedCollectionView`,它是`...
"flex的datagrid分页"这个主题,主要涉及如何在DataGrid中实现数据的分页显示,以便用户能够高效地浏览大量数据,而不会因为一次性加载所有数据导致性能下降。下面将详细介绍DataGrid分页的相关知识点: 1. **数据...
WPF DataGrid 控件是一个强大的表格展示工具,它可以方便地展示和操作数据,而添加分页功能则可以提高应用的性能,减少内存占用,并提供更好的用户体验。本文将详细介绍如何在WPF中使用C#实现DataGrid的分页功能。 ...
这是我自己开发的一个dataGrid分页的控件,上传的资源是一个打成包的flex项目,这个控件在查询数据时是与后台进行实时交互的,表格的表头样式是重写皮肤类进行定义的,而隔行变色是通过css来实现的。其中最重要的...
在Windows Presentation Foundation (WPF) 中,`DataGrid` 是一个强大的控件,常用于展示数据集合,并允许用户进行编辑、排序和筛选等操作。在处理大量数据时,为了提高性能和用户体验,分页功能显得尤为重要。本篇...
`DataGrid`组件是Flex提供的一种强大的工具,用于显示表格形式的数据。在这个实例中,我们将探讨如何利用Flex的`DataGrid`组件结合XML文件来实现动态数据列表。 首先,让我们深入了解`DataGrid`组件。`DataGrid`是...
Flex中的DataGrid分页是一项重要的功能,能够有效提高大数据量时的应用性能。通过本篇文章的学习,相信你已经掌握了如何在Flex项目中实现DataGrid的分页功能。在实际开发过程中,可以根据具体需求进一步优化和完善。
要实现分页,我们需要设置DataGrid的ItemsSource属性,将其绑定到一个支持分页的数据源。这通常是一个实现ICollectionView接口的对象,如PagedCollectionView或ICollectionViewGroup。 以下是一些关键步骤: 1. **...
这个小程序利用SSH2(Struts2、Spring、Hibernate)框架,结合Maven构建工具,实现了通过jQuery的datagrid插件进行Ajax分页加载数据的功能。以下将详细介绍其中涉及的技术和知识点。 1. **SSH2框架**:SSH2是Java ...
在客户端分页中,应用程序会一次性从服务器获取所有数据,然后在客户端进行分页处理。这种方式的优点是用户交互响应快,因为数据已经加载在本地,但缺点是对服务器资源和客户端内存的消耗较大。客户端分页通常适用...
你可以通过遍历DataGrid的items属性来获取所有数据项,然后访问每个item的children来获取单元格值。记得只提取可见的和有数据的单元格,因为DataGrid可能包含空格或隐藏列。 2. **创建数据结构**: 将解析出的数据...
在IT行业中,Flex Datagrid是一种常用的UI组件,用于展示和管理大量数据,它在Adobe Flex或ActionScript 3(AS3)开发环境中广泛使用。这个主题涉及到如何将Flex Datagrid中的数据保存到Excel文件,以及从Excel文件...