我在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
触发两次!不确定我遗漏了什么。
任何帮助表示感谢,提前谢谢!
答案 0 :(得分:0)
是的,这似乎是个错误。还有其他报告:http://apache-flex-users.2333346.n4.nabble.com/spark-Datagrid-GridItemEditorEvent-firing-twice-td3582.html
正如在本次讨论中所提到的,我在_goForCellEdit=true
事件中设置了一个标记ItemListEditStart
并在gridItemEditorSessionSave
事件中进行了检查,从而完成了一种解决方法。如果有人遇到同样的问题,希望会有所帮助。