初学FLEX时,需要在AS里动态生成DataGrid,结果搞了很久才搞明白怎么把用MXML写出来的DataGrid改成用AS写出来,其中最主要的就是自定义itemEditor、itemRender怎么写,写篇东西整理总结下。
先看看下面这段代码:
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> <mx:Script> <![CDATA[ import mx.collections.ArrayCollection; import mx.controls.DataGrid; import mx.events.ListEvent; [Bindable] private var dgDataArr:Array = [{name: "Jon", job: "officer"}, {name: "James", job: "seller"}, {name: "Jodon", job: "manager"}]; private function itemClickHandler(e:ListEvent):void { trace(e.target); } ]]> </mx:Script> <mx:Component id="comboboxEditor"> <mx:ComboBox dataProvider="{dt}" editable="true"> <mx:Script> <![CDATA[ private var dt:Array = ["officer", "seller", "manager"]; ]]> </mx:Script> </mx:ComboBox> </mx:Component> <mx:DataGrid width="100%" x="10" y="20" fontSize="14" dataProvider="{dgDataArr}" editable="true" itemClick="itemClickHandler(event)"> <mx:columns> <mx:DataGridColumn dataField="name" editable="false" /> <mx:DataGridColumn dataField="job" itemEditor="{comboboxEditor}"> </mx:DataGridColumn> </mx:columns> </mx:DataGrid> </mx:Application>
代码实现的是创建一个DataGrid,其中job栏可以编辑,并且编辑器是自定义的一个ComboBox。效果如下:
现在看怎么用AS代替MXML创建同样的DataGrid。
(更多…)