Apache flex 如何在FLEX 4中重置Arraycollection并重新初始化和覆盖Arraycollection和刷新datagrid

Apache flex 如何在FLEX 4中重置Arraycollection并重新初始化和覆盖Arraycollection和刷新datagrid,apache-flex,datagrid,flex4,Apache Flex,Datagrid,Flex4,我使用flex在datagrid中列出了一个Arraycollection,在datagrid中我有一个删除行的按钮,之后我通过从java服务获取一个数组来重新分配相同的Arraycollection 我的代码: <mx:DataGrid width="100%" height="100%" dataProvider="{xxx}" > <mx:columns> <mx:DataGridColumn dataField="name" headerText="

我使用flex在datagrid中列出了一个Arraycollection,在datagrid中我有一个删除行的按钮,之后我通过从java服务获取一个数组来重新分配相同的Arraycollection

我的代码:

<mx:DataGrid width="100%" height="100%" dataProvider="{xxx}" >
<mx:columns>
    <mx:DataGridColumn dataField="name" headerText="Name"/>
    <mx:DataGridColumn dataField="status" headerText="Status"/>
    <mx:DataGridColumn dataField="path" headerTeUxt="Actions" wordWrap="true" minWidth="120">
        <mx:itemRenderer>
            <mx:Component>
            <mx:Script>
                <![CDATA[
                    protected function deliteminlist(event:MouseEvent):void
                    {
                            //delete a value in arrayCollection
                            //Fetch the array collection from java Service
                            //assigning to variable dataprovider variable
                            _view.xxx = null;
                            _view.xxx = temp;
                            //xxx is the arraycollection and dataprovider for the datagrid
                    }
                ]]>
            </mx:Script>
            <mx:Image source="@Embed(source='/assets/images/clone.png')" click="deliteminlist(event)" />
            </mx:Component>
        </mx:itemRenderer>
    </mx:DataGridColumn>
</mx:columns>
</mx:DataGrid>

这是在抛出错误(发生内部错误-错误#1010)。
)并且数据不会在datagrid中刷新。

您使用的是内联项渲染器。它的范围与父视图不同,因此不能引用_view.xxx(不在范围内)

您可以尝试使用outerDocument关键字来解决此问题

outerDocument.xxx = null;
outerDocument.xxx = temp;

您正在使用内联项渲染器。它的范围与父视图不同,因此不能引用_view.xxx(不在范围内)

您可以尝试使用outerDocument关键字来解决此问题

outerDocument.xxx = null;
outerDocument.xxx = temp;

你看到了什么错误?你的服务?还是来自Flex?或者从其他方面?看起来有竞争条件,最好是分派事件/其他外部服务来处理服务调用,而不是项目呈现器。我不会在deliteminlist方法中执行任何业务逻辑,甚至不会从arraycollection中删除项。@Reboog711实际上这是用于vSphere web客户端插件的,我只在FLEX层中收到错误。。。我试着单独调用java函数,它可以正常工作fine@Vignesh那么,错误是什么呢?请共享完整的堆栈跟踪。哪一行代码导致了错误?作为参考点;永远不要尝试从DataGrid中删除行。始终修改dataProvider,DataGrid将自动检测这些更改。如果您确实需要删除一行;通过改变数据网格的高度来实现这一点;这将导致DataGrid显示更少的行。要根据渲染器按钮从数据提供程序中删除项目,请单击“我始终发送冒泡事件”,并在包含DataGrid的组件中处理它;不是渲染器我没有从datagrid中删除行我仅从#datagrid.dataprovider中删除了一项。。。它在这个地方抛出错误_view.xxx=temp;如果我尝试更改#datagrid.dataprovider=temp,此时它可以工作,但无法覆盖变量您看到了什么错误?你的服务?还是来自Flex?或者从其他方面?看起来有竞争条件,最好是分派事件/其他外部服务来处理服务调用,而不是项目呈现器。我不会在deliteminlist方法中执行任何业务逻辑,甚至不会从arraycollection中删除项。@Reboog711实际上这是用于vSphere web客户端插件的,我只在FLEX层中收到错误。。。我试着单独调用java函数,它可以正常工作fine@Vignesh那么,错误是什么呢?请共享完整的堆栈跟踪。哪一行代码导致了错误?作为参考点;永远不要尝试从DataGrid中删除行。始终修改dataProvider,DataGrid将自动检测这些更改。如果您确实需要删除一行;通过改变数据网格的高度来实现这一点;这将导致DataGrid显示更少的行。要根据渲染器按钮从数据提供程序中删除项目,请单击“我始终发送冒泡事件”,并在包含DataGrid的组件中处理它;不是渲染器我没有从datagrid中删除行我仅从#datagrid.dataprovider中删除了一项。。。它在这个地方抛出错误_view.xxx=temp;如果我尝试更改#datagrid.dataprovider=temp,此时它可以工作,但无法覆盖变量