初学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。
(更多…)
