首页 > 网站 > WEB开发 > 正文

7.5.创建一个Item Editor,它可以处理含有复杂数据类型的Data

2024-04-27 13:52:00
字体:
来源:转载
供稿:网友
7.5.1.问题
如果item editor 收到的data 是一个用户自定义对象,我们需要创建一个可以修改这个含有复杂类型对象的item editor。
7.5.2.解决办法
创建一个item editor,它可以返回data 中所有己经被修改过的属性。在List 上创建一个监听器,用于对itemEditEnd 事件的监听,在收到这个事件后要停止这个事件继续上父级派发(flex 冒泡的事件机制),并读取那个被修改过的item editor 中的data 属性。
7.5.3.讨论
List 类里有一个属性叫editorDataField,如果你的editor 处理的是单个属性,使用它将是最简单最方便的选择.但如果想用editor 处理含有多个属性的复杂对象,必须能够阻止List 、

DataGridColumn 的一些原有动作和事件,并且可以通过itemEditorInstance 读到List、DataGridColumn 中的数据。

在下边的例子中,processData 这个方法是用于处理itemEditEnd 事件的。
+展开
-XML
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxmlwidth="700height="300">
<mx:Script>
<![CDATA[
import mx.events.ListEvent;
import mx.collections.ArrayCollection;
import oreilly.cookbook.MultipleDataTypeEditor;
[Bindable]
Private var arr:ArrayCollection = new ArrayCollection([{age:12, name:"Joe"},{age:16,name:"Jorge"},{age:19, name:"Jojo"}
,{age:2, name:"James"},{age:12, name:"Joaquin"}]);
public function processData(event:ListEvent):void {
// Disable copying data back to the control.
event.preventDefault();
// Get new label from editor.
list.editedItemRenderer.data= MultipleDataTypeEditor
(list.itemEditorInstance).data;
// Close the cell editor.
list.destroyItemEditor();
// Notify the list control to update its display.
list.dataProvider.notifyItemUpdate(list.editedItemRenderer);
}

]]>
</mx:Script>
<mx:List id="listitemEditor="oreilly.cookbook.MultipleDataTypeEditor"
dataProvider="{arr}itemEditEnd="processData(event)"
itemRenderer="oreilly.cookbook.MultipleDataTypeRenderer"
width="350editable="true">

</mx:List>
</mx:Canvas>
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表