Actionscript 3 如何在FlexDataGrid中添加下拉列表
我试图在DataGrid表中添加DropDownList。在用户从下拉列表中选择一个项目后,我选择的项目不会被反映或未被选择。我知道我可以使用ComboBoxGridItemEditor来实现我想要的结果。但是组合框是可编辑的,我不想让用户编辑,只是从列表中的一个选项中选择。这就是我尝试在dataGrid中添加dropDownList的原因 请告诉我如何识别和更新数据网格中单元格的值,并将值保存回数据提供商 问题:因此,当我尝试选择蓝色时,单元格不会更新,而是保持红色 谢谢你,瑞卡Actionscript 3 如何在FlexDataGrid中添加下拉列表,actionscript-3,apache-flex,drop-down-menu,datagrid,flex4.5,Actionscript 3,Apache Flex,Drop Down Menu,Datagrid,Flex4.5,我试图在DataGrid表中添加DropDownList。在用户从下拉列表中选择一个项目后,我选择的项目不会被反映或未被选择。我知道我可以使用ComboBoxGridItemEditor来实现我想要的结果。但是组合框是可编辑的,我不想让用户编辑,只是从列表中的一个选项中选择。这就是我尝试在dataGrid中添加dropDownList的原因 请告诉我如何识别和更新数据网格中单元格的值,并将值保存回数据提供商 问题:因此,当我尝试选择蓝色时,单元格不会更新,而是保持红色 谢谢你,瑞卡 <f
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
[Bindable]
private var myDP:ArrayCollection = new ArrayCollection([
{label1:"Order #2314", quant:3, color:'red'},
{label1:"Order #2315", quant:3, color:'red'}
]);
]]>
</fx:Script>
<s:DataGrid id="myDG" x="85" y="57" width="393" height="151" dataProvider="{myDP}"
editable="true" variableRowHeight="true">
<s:columns>
<s:ArrayList>
<s:GridColumn dataField="label1" headerText="Order #" editable="false"/>
<s:GridColumn dataField="quant" headerText="Qty" editable="true"/>
<s:GridColumn dataField="color" headerText="Color" editable="true">
<s:itemEditor>
<fx:Component>
<s:GridItemEditor>
<s:DropDownList id="myDropList" requireSelection="true">
<s:dataProvider>
<s:ArrayCollection>
<fx:String>red</fx:String>
<fx:String>blue</fx:String>
<fx:String>green</fx:String>
</s:ArrayCollection>
</s:dataProvider>
</s:DropDownList>
</s:GridItemEditor>
</fx:Component>
</s:itemEditor>
</s:GridColumn>
</s:ArrayList>
</s:columns >
</s:DataGrid>
红色
蓝色
绿色
基本上,您需要在“自定义项呈现器”中通过数据获取/设置方法将更改后的selectedItem更新/保存到arraycollection
查看数据[column.dataField]=value代码>此行保存回arraycollection
<s:GridColumn dataField="color" headerText="Color" editable="true">
<s:itemEditor>
<fx:Component>
<s:GridItemEditor>
<fx:Script>
<![CDATA[
import mx.core.FlexGlobals;
import mx.events.FlexEvent;
import spark.events.IndexChangeEvent;
override public function set value(newValue:Object):void {
cb.selectedItem = newValue;
}
override public function get value():Object {
return cb.selectedItem.toString();
}
override public function setFocus():void {
cb.setFocus();
}
override public function save():Boolean
{
data[column.dataField] = value;
return true;
}
]]>
</fx:Script>
<s:DropDownList id="cb" requireSelection="true">
<s:dataProvider>
<s:ArrayCollection>
<fx:String>red</fx:String>
<fx:String>blue</fx:String>
<fx:String>green</fx:String>
</s:ArrayCollection>
</s:dataProvider>
</s:DropDownList>
</s:GridItemEditor>
</fx:Component>
</s:itemEditor>
红色
蓝色
绿色
非常感谢您,先生!这有帮助!我真的很感谢你的帮助。让我明白一点:)嗨,先生,我还有一个问题。你怎么知道“覆盖公共函数集值(newValue:Object):void”这样的方法存在,我们可以覆盖它们?我是新来的felx你能指导我吗?例如,如果我需要textfield的自定义itemrenderer,那么它将是相同的?如果您想要为itemrenderer获取所有覆盖函数。如果您使用的是flash builder,只需右键单击任何itemrenderer类文件,然后选择->源->覆盖/实现方法对话框列表。如果您不熟悉flex,请更好地从中学习flex,tourDe flex.hi我右键单击itemrenderer类文件,然后选择->源->覆盖/实现和saw方法对话框列表。但是我没有看到任何setvalue或get以及您在上面覆盖的save方法。我该怎么办?谢谢:)