[code]
一般渲染器和编辑器不能共存
编辑器
<mx:DataGridColumn dataField="score" headerText="金牌数" editable="true"
editorDataField="value" itemEditor="mx.controls.NumericStepper"
labelFunction="labelFun" />
itemEditor="mx.controls.NumericStepper" 代表数字微调组件, editorDataField="value" 表示数字微调组件的哪个列
labelFunction="labelFun"
internal function labelFun(item:Object,column:DataGridColumn):String
{
column.editable=false;
if (item.hasOwnProperty("score"))
return item.score+"枚";
else
return item.score=null;
}
渲染器
方式1:
<mx:DataGridColumn dataField="score" headerText="产生金牌数"
editable="true" itemRenderer="LinkBtnRenderer"//itemRenderer="mx.controls.TextInput"这个也可以哈 />
这个LinkBtnRenderer就是一个自定义的mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" width="200" height="30" horizontalAlign="left" verticalAlign="middle">
注意:data是默认数据源对象
<mx:Button label="{data.label}"/>
<mx:LinkButton label="Mr+{data.data}"/>
</mx:HBox>
方式2:render是一样的,都是一个mxml而已
<mx:List id="myList" variableRowHeight="true"
height="180" width="250"
backgroundColor="white"
initialize="initCellEditor();"//渲染器在这里通过as代码指定的 >
//这里的dataProvider完全可以写在上面的属性里面哈
<mx:dataProvider>
<mx:Object label="Alaska"
data="Juneau"
webPage="http://www.state.ak.us/"/>
<mx:Object label="Alabama"
data="Montgomery"
webPage="http://www.alabama.gov/" />
<mx:Object label="Arkansas"
data="Little Rock"
webPage="http://www.state.ar.us/"/>
</mx:dataProvider>
</mx:List>
<mx:Script>
<![CDATA[
//自定义渲染器,这个list中只定义了数据提供者,而没有定义怎么呈现,
//呈现由 myList.itemRenderer的渲染器来完成
import mx.core.ClassFactory;
// Cast the value of the itemRenderer property
// to ClassFactory.
public function initCellEditor():void {
myList.itemRenderer=new ClassFactory(LinkRenderer);
}
]]>
</mx:Script>
[/code]
一般渲染器和编辑器不能共存
编辑器
<mx:DataGridColumn dataField="score" headerText="金牌数" editable="true"
editorDataField="value" itemEditor="mx.controls.NumericStepper"
labelFunction="labelFun" />
itemEditor="mx.controls.NumericStepper" 代表数字微调组件, editorDataField="value" 表示数字微调组件的哪个列
labelFunction="labelFun"
internal function labelFun(item:Object,column:DataGridColumn):String
{
column.editable=false;
if (item.hasOwnProperty("score"))
return item.score+"枚";
else
return item.score=null;
}
渲染器
方式1:
<mx:DataGridColumn dataField="score" headerText="产生金牌数"
editable="true" itemRenderer="LinkBtnRenderer"//itemRenderer="mx.controls.TextInput"这个也可以哈 />
这个LinkBtnRenderer就是一个自定义的mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" width="200" height="30" horizontalAlign="left" verticalAlign="middle">
注意:data是默认数据源对象
<mx:Button label="{data.label}"/>
<mx:LinkButton label="Mr+{data.data}"/>
</mx:HBox>
方式2:render是一样的,都是一个mxml而已
<mx:List id="myList" variableRowHeight="true"
height="180" width="250"
backgroundColor="white"
initialize="initCellEditor();"//渲染器在这里通过as代码指定的 >
//这里的dataProvider完全可以写在上面的属性里面哈
<mx:dataProvider>
<mx:Object label="Alaska"
data="Juneau"
webPage="http://www.state.ak.us/"/>
<mx:Object label="Alabama"
data="Montgomery"
webPage="http://www.alabama.gov/" />
<mx:Object label="Arkansas"
data="Little Rock"
webPage="http://www.state.ar.us/"/>
</mx:dataProvider>
</mx:List>
<mx:Script>
<![CDATA[
//自定义渲染器,这个list中只定义了数据提供者,而没有定义怎么呈现,
//呈现由 myList.itemRenderer的渲染器来完成
import mx.core.ClassFactory;
// Cast the value of the itemRenderer property
// to ClassFactory.
public function initCellEditor():void {
myList.itemRenderer=new ClassFactory(LinkRenderer);
}
]]>
</mx:Script>
[/code]