• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    FLEX ArrayCollection删除过滤的数据问题解决
    一、问题:

    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读取txt文件中的内容报错原因分析及解决
    下一篇:Flex 错误(mx.messaging.messages::RemotingMessage)分析
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    FLEX ArrayCollection删除过滤的数据问题解决 FLEX,ArrayCollection,删除,过滤,