Apache flex Flash builder:datagrid删除项-索引超出范围

Apache flex Flash builder:datagrid删除项-索引超出范围,apache-flex,datagrid,air,builder,removechild,Apache Flex,Datagrid,Air,Builder,Removechild,我有一个目前无法解决的问题,非常感谢您的帮助。 将本地XML文件加载到HTTPservice中,并将数据加载到DataGrid中。本地文件包含有关本地存储文件的信息 为了安全起见,在加载AIR应用程序时,我希望运行加载的datagrid并检查本地文件是否存在。如果它不存在,我想删除datagrid中的行 这样做会产生一个恼人的错误:提供的索引超出了范围 我知道,删除datagrid中的元素将导致新的索引,从而导致此错误 谢谢你的建议 public function checkiffileislo

我有一个目前无法解决的问题,非常感谢您的帮助。 将本地XML文件加载到HTTPservice中,并将数据加载到DataGrid中。本地文件包含有关本地存储文件的信息

为了安全起见,在加载AIR应用程序时,我希望运行加载的datagrid并检查本地文件是否存在。如果它不存在,我想删除datagrid中的行

这样做会产生一个恼人的错误:提供的索引超出了范围

我知道,删除datagrid中的元素将导致新的索引,从而导致此错误

谢谢你的建议

public function checkiffileislocal(event:Event):void{

            var i:int;
            var count:Number = (dgUserRequest.dataProvider as ICollectionView).length;

            for (i=0;i < count;i++)
            {

                dgUserRequest.selectedIndex = i;
                if (File.applicationStorageDirectory.resolvePath(dgUserRequest.selectedItem.id).exists == false)
                {   
                    dgUserRequest.removeChildAt(dgUserRequest.selectedIndex);
                }

            }


        }
公共函数checkifileisLocal(事件:事件):无效{
变量i:int;
变量计数:Number=(dgUserRequest.dataProvider作为ICollectionView);
对于(i=0;i
听起来你想从数据提供者中删除一个项目;不是DataGrid的可视子级

DataGrid的行不是它的子行


根据数据提供程序中的项目数自动创建行/列。您不应该试图直接操纵行/列对象

谢谢你的反馈。禁用行也是一个选项。有什么办法吗?@webgeek我想你需要仔细阅读一下渲染器回收。假设你的网格有滚动条;无法保证某一行只显示某一组数据。我无法想象在给定这些约束的情况下禁用一行有意义的用例。因为当用户滚动时,该行将显示不同的数据。我想知道您是否需要一个自定义itemRenderer,它将根据数据禁用单元格。这样,当用户在网格中滚动时,单元格将保持禁用状态。通常,当您迭代某个内容以删除项目时,您希望反向执行该迭代。否则,循环代码最终可能会产生这样的错误。尽管如此,下面的答案也是恰当的。从数据提供程序中删除项(而不是删除子对象)。如果要禁用行,可以向每个项目添加“isDisabled”属性,以便项目呈现器可以使用此属性显示处于禁用状态的行。