Apache flex 如何在FLEX 4中重置Arraycollection并重新初始化和覆盖Arraycollection和刷新datagrid
我使用flex在datagrid中列出了一个Arraycollection,在datagrid中我有一个删除行的按钮,之后我通过从java服务获取一个数组来重新分配相同的Arraycollection 我的代码: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="
<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,此时它可以工作,但无法覆盖变量