手机
当前位置:查字典教程网 >编程开发 >Flex >FLEX ArrayCollection删除过滤的数据问题解决
FLEX ArrayCollection删除过滤的数据问题解决
摘要:一、问题:ArrayCollection添加过滤器后,部门数据不会被展现,当我删除未展现的数据时,调用removeItemAt()是无法删除...

一、问题:

ArrayCollection添加过滤器后,部门数据不会被展现,当我删除未展现的数据时,调用removeItemAt()是无法删除的。

二、原因:

复制代码 代码如下:

public function removeItemAt(index:int):Object

{

if (index < 0 || index >= length)

{

var message:String = resourceManager.getString(

"collections", "outOfBounds", [ index ]);

throw new RangeError(message);

}

var listIndex:int = index;

if (localIndex)

{

var oldItem:Object = localIndex[index];

listIndex = list.getItemIndex(oldItem);

}

return list.removeItemAt(listIndex);

}

因为var oldItem:Object = localIndex[index];中localIndex是一个未被过滤的数据。

三、解决

ArrayCollection中有list的属性:

复制代码 代码如下:

public function get list():IList

{

return _list;

}

_list就是原始数据。

所以如果要在添加了过滤器的ArrayCollection上删除过滤的数据,需要list的帮助。实现代码如下:

复制代码 代码如下:

public function findEmployeeInSource(id:int):OrgEmployee {

var obj:OrgEmployee = null;

var list:IList = employees.list;

var len:int = list.length;

for (var index:int = 0; index < len; index++) {

obj = list.getItemAt(index) as OrgEmployee;

if (obj.id == id) {

return obj;

}

}

return null;

}

public function deleteEmployee(id:int):void {

var obj:OrgEmployee = findEmployeeInSource(id);

if (obj != null) {

var index:int = employees.list.getItemIndex(obj);

employees.list.removeItemAt(index);

}

}

或者一个函数:

复制代码 代码如下:

public function deleteEmployee(id:int):void {

var obj:OrgEmployee = null;

var list:IList = employees.list;

var len:int = list.length;

for (var index:int = 0; index < len; index++) {

obj = list.getItemAt(index) as OrgEmployee;

if (obj.id == id) {

list.removeItemAt(index);

return;

}

}

}

【FLEX ArrayCollection删除过滤的数据问题解决】相关文章:

js调用Flex中的方法并向flex中传参及flex调用js示例

flex内嵌html网页示例代码

ie9下关闭弹出窗口出现__flash__removeCallback未定义错误

flex自定义按钮皮肤示例附图

flex4 panel去掉标题设置透明度效果代码

Flex中TabNavigator设置Tabs样式思路及源码

Flex回调函数应用示例

flex与js通信与彼此之间的互调整理(一)

flex的tree动态加载大量数据与滚动条相关问题探讨

Flex Label自动截取、自动换行代码

精品推荐
分类导航