我在Flex s:DataGrid/>
中遇到了一个奇怪的问题。gridItemEditorSessionSave
事件为我触发了两次。重现此问题的最少代码如下:
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx">
<fx:Declarations>
<s:ArrayCollection id="dp">
<fx:Object test="Test"/>
</s:ArrayCollection>
</fx:Declarations>
<fx:Script>
<![CDATA[
import spark.events.GridItemEditorEvent;
protected function onGridItemEditorSessionSave(event:GridItemEditorEvent):void
{
trace("Edited >>>", event.columnIndex);
}
protected function onGridItemEditorSessionStart(event:GridItemEditorEvent):void
{
trace("Edit Start >>>", event.columnIndex);
}
]]>
</fx:Script>
<s:DataGrid dataProvider="{dp}" width="100%" height="100%" editable="true"
gridItemEditorSessionSave="onGridItemEditorSessionSave(event)"
gridItemEditorSessionStart="onGridItemEditorSessionStart(event)">
<s:columns>
<s:ArrayCollection>
<s:GridColumn dataField="test"/>
</s:ArrayCollection>
</s:columns>
</s:DataGrid>
</s:WindowedApplication>
当我编辑单元格时,trace语句如下所示:Edit Start >>> 0 Edited >>> 0 Edited >>> 0
这表明onGridItemEditorSessionSave
触发了两次!不确定我错过了什么。
任何帮助感激不尽,提前感谢!
1条答案
按热度按时间olmpazwi1#
是的,它看起来像一个bug。还有其他关于这个的报告:http://apache-flex-users.2333346.n4.nabble.com/spark-Datagrid-GridItemEditorEvent-firing-twice-td3582.html
正如在本讨论中提到的,我已经通过在
ItemListEditStart
事件中设置一个标志_goForCellEdit=true
并在gridItemEditorSessionSave
事件中检查它来做了一个变通方案。希望在有人遇到同样的问题时能有所帮助。