Flex DataGrid 中的 itemEditEnd 事件
itemEditEnd event in Flex DataGrid
所以,我正在研究如何 edit/validate 在 Flex 3 DataGrid 单元格中输入。这是我用来学习的基本示例:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application
xmlns:mx="http://www.adobe.com/2006/mxml"
width="100%" height="100%" backgroundSize="100%">
<mx:DataGrid editable="true" itemEditEnd="check(event)">
<mx:columns>
<mx:DataGridColumn headerText="Name" dataField="name"/>
<mx:DataGridColumn headerText="Phone" dataField="phone"/>
</mx:columns>
<mx:dataProvider>
<mx:ArrayCollection>
<mx:Object name="John" phone="(69)2345-6798"/>
<mx:Object name="Mary" phone="(69)1234-5678"/>
</mx:ArrayCollection>
</mx:dataProvider>
</mx:DataGrid>
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.events.DataGridEvent;
import mx.collections.ArrayCollection;
private function check(event:DataGridEvent):void{
if(event.dataField == "phone"){
Alert.show("hi there!");
}
}
]]>
</mx:Script>
</mx:Application>
编译它和运行 .swf 后,它只显示一个两行的网格;在编辑网格中的任何 phone 数字并在其外部单击后(意味着编辑的单元格失去焦点,因此 Flex 将其解释为 "the edit has ended",从而触发 itemEditEnd
事件,调用check()
函数)消息 "hi there!" 将出现。我的问题是:如果我一次只编辑一个 phone 号码,为什么它会出现两次?据我所知,每次我编辑 phone 号码时,该消息应该只出现一次,而不是两次。关于框架的工作原理,我是否遗漏了什么?
这就像一个错误。当我点击 tab/enter 或点击另一个单元格时。这会生成 itemEditEnd 事件 并将焦点移动到新的可编辑单元格。
在 itemEditEnd 事件 的事件处理程序中,显示了一个警报。此弹出窗口会从该可编辑单元格中移除焦点...从而调度第二个 itemEditEnd 事件.
因此,为此您必须为此添加一些逻辑以防止出现第二个警告框。比如,设置一个boolean
变量,当alert一次时设为true。
同样的问题已经在这里问了。
Why does Alert.show() give me two Alert boxes?
而且,很多人以前遇到过同样的问题。
希望对您有所帮助。
所以,我正在研究如何 edit/validate 在 Flex 3 DataGrid 单元格中输入。这是我用来学习的基本示例:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application
xmlns:mx="http://www.adobe.com/2006/mxml"
width="100%" height="100%" backgroundSize="100%">
<mx:DataGrid editable="true" itemEditEnd="check(event)">
<mx:columns>
<mx:DataGridColumn headerText="Name" dataField="name"/>
<mx:DataGridColumn headerText="Phone" dataField="phone"/>
</mx:columns>
<mx:dataProvider>
<mx:ArrayCollection>
<mx:Object name="John" phone="(69)2345-6798"/>
<mx:Object name="Mary" phone="(69)1234-5678"/>
</mx:ArrayCollection>
</mx:dataProvider>
</mx:DataGrid>
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.events.DataGridEvent;
import mx.collections.ArrayCollection;
private function check(event:DataGridEvent):void{
if(event.dataField == "phone"){
Alert.show("hi there!");
}
}
]]>
</mx:Script>
</mx:Application>
编译它和运行 .swf 后,它只显示一个两行的网格;在编辑网格中的任何 phone 数字并在其外部单击后(意味着编辑的单元格失去焦点,因此 Flex 将其解释为 "the edit has ended",从而触发 itemEditEnd
事件,调用check()
函数)消息 "hi there!" 将出现。我的问题是:如果我一次只编辑一个 phone 号码,为什么它会出现两次?据我所知,每次我编辑 phone 号码时,该消息应该只出现一次,而不是两次。关于框架的工作原理,我是否遗漏了什么?
这就像一个错误。当我点击 tab/enter 或点击另一个单元格时。这会生成 itemEditEnd 事件 并将焦点移动到新的可编辑单元格。
在 itemEditEnd 事件 的事件处理程序中,显示了一个警报。此弹出窗口会从该可编辑单元格中移除焦点...从而调度第二个 itemEditEnd 事件.
因此,为此您必须为此添加一些逻辑以防止出现第二个警告框。比如,设置一个boolean
变量,当alert一次时设为true。
同样的问题已经在这里问了。
Why does Alert.show() give me two Alert boxes?
而且,很多人以前遇到过同样的问题。
希望对您有所帮助。