先看看下面的代码:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" initialize="init()"
backgroundGradientColors="[#ffffff, #ffffff]" >
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
[Bindable]
public var ac:ArrayCollection=new ArrayCollection([
{name:"1",sex:"男",age:"11"},
{name:"2",sex:"女",age:"12"},
{name:"3",sex:"女",age:"14"},
{name:"4",sex:"女",age:"15"},
{name:"5",sex:"男",age:"16"},
{name:"6",sex:"男",age:"13"}
]);
public function init():void{
for(var i:int=0;i<ac.length;i++){
var item:Object=ac.getItemAt(i);
if(item.sex=="女"){
ac.removeItemAt(i);
}
}
}
]]>
</mx:Script>
<mx:DataGrid width="100%" dataProvider="{ac}">
<mx:columns>
<mx:DataGridColumn dataField="name" width="100" headerText="ID"/>
<mx:DataGridColumn dataField="sex" width="100" headerText="性别"/>
<mx:DataGridColumn dataField="age" width="100" headerText="年龄"/>
</mx:columns>
</mx:DataGrid>
</mx:Application>
上面的代码实现的功能是在表格中过滤掉性别是女的记录项,似乎上面的代码没什么问题,但是运行的结果是
有点奇怪吧!其实一点都不奇怪,来看看API是怎么定义removeItemAt的:
下面来解释下出现这种情况的原因:
在ArrayCollection中有item0、item1、item2、item3、item4,其中item1、item2、item3是要删除的项,用for循环ArrayCollection,当循环次数i到1是,ArrayCollection删除item1,item2、item3、item4的索引位置依次减少1,这样item2的索引位置变为1了,但是下次循环i已经是2了,把item2错过了。因此需要在ac.removeItemAt(i);代码后面把i的值减1,即i--;
public function init():void{
for(var i:int=0;i<ac.length;i++){
var item:Object=ac.getItemAt(i);
if(item.sex=="女"){
ac.removeItemAt(i);
i--;
}
}
}
网上有一篇博客说先得到ArrayCollection的source,在对数组进行操作,我没看明白是怎么实现的,但是我觉得我的方法是最简单的。
- 大小: 17.3 KB
- 大小: 28.2 KB
分享到:
相关推荐
Flex的Array和ArrayCollection
Flex的ArrayCollection在某些情况无法绑定解决方法
ArrayCollection求最大值,最小值,排序。供大家共同学习一下。
tree多数情况下操作xml比较方便,而本人却对xml有些排斥,说得更确切些,对xml用的不是那么得心应手,所以选择了ArrayCollection
NULL 博文链接:https://tangdonglai.iteye.com/blog/1478277
NULL 博文链接:https://xaajie.iteye.com/blog/379054
ArrayCollection添加过滤器后,调用removeItemAt()是无法删除的,下面有个不错的解决方法,大家可以参考下
因为new ArrayCollection 需要 array对象,event.result是空间返回对象(JAVA方法返回值)所以类型不同无法使用new 构造ArrayCollection ,可是恶心的FLEX偏偏支持javalist=ArrayCollection
flex外部读取xml
最近研究FLEX,在网上看过100遍同一篇文章,结果测试不通,不知道到底能不能跑通,最后翻资料自己试验处理。
flex通过httpService读取xml数据到datagird中,通过读取远程URL的XML数据(这里保存到本地),保存到ArrayCollection中,然后在将ArrayCollection绑定到datagird上 环境:flex3.0 可直接运行
1. Java通过第三方控件POI操作Excel,读取的数据存储在ArrayCollection中。POI3.7 下载地址 2. 通过Blazeds将ArrayList发送到Flex中的ArrayCollection中。(Blazeds构建过程不在本篇讨论范围,见flex4+blazeds+java...
在State Changes事件中添加和删除事件监听器 11.11节. 添加视图States到Flash组件 11.12节. 处理StateChange 事件 11.13节. 动态生成States和Transitions 11.14节. 创建State的自定义动作(action) 第十二章. 特效...
as3xls 只支持excel2003版本以下的,不支持扩展名为.xlsx的excel,而类库Rxlsx支持....var datasource:ArrayCollection = new ArrayCollection(sheet); //可转换为ArrayCollection,用于表格控件grid绑定数据显示出来
2. var bar:ArrayCollection = new ArrayCollection(); 3. for each ( var i:Object in ac ){ 4. bar.addItem( i ); 5. } 6. // fantastic ! // 7. var bar:ListCollectionView = new ListCollectionView( ...
as3xls 只支持excel2003版本以下的,不支持扩展名为.xlsx的excel,而类库Rxlsx支持....var datasource:ArrayCollection = new ArrayCollection(sheet); //可转换为ArrayCollection,用于表格控件grid绑定数据显示出来
其中包含一个三种状态的checkbox,DataGrid代码中引用了 带多选框的DataGrid(AdvancedDataGrid) 表头有全选CheckBox,三种状态:全选、部分选择、无选择 如果改变目录结构,需要在CustomCheckBox.mxml中更改inner....
flex4 动态获取对象属性,动态生成数据源,动态生成line...2.每增加一条线,其实就是增加一个数据源中的ArrayCollection每个对象的一个属性,且属性名不能重复 3.修改ArrayCollection后,同时修改LineChart的series
至于FusionCharts的相关文件稍后我将放在附件中。 1.新建flex工程: 2.对工程进行相应配置 3.继续配置: 4.找到fusioncharts文件中FusionChartsFlex\Charts\FlashBuilder4_SWC下面的那个swc文件,将其...
import mx.collections.ArrayCollection; import mx.rpc.events.ResultEvent; [Bindable] private var slides:ArrayCollection private function resultHandler(event:ResultEvent):void ...