Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 如何在FlexDataGrid中添加下拉列表_Actionscript 3_Apache Flex_Drop Down Menu_Datagrid_Flex4.5 - Fatal编程技术网

Actionscript 3 如何在FlexDataGrid中添加下拉列表

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

我试图在DataGrid表中添加DropDownList。在用户从下拉列表中选择一个项目后,我选择的项目不会被反映或未被选择。我知道我可以使用ComboBoxGridItemEditor来实现我想要的结果。但是组合框是可编辑的,我不想让用户编辑,只是从列表中的一个选项中选择。这就是我尝试在dataGrid中添加dropDownList的原因

请告诉我如何识别和更新数据网格中单元格的值,并将值保存回数据提供商

问题:因此,当我尝试选择蓝色时,单元格不会更新,而是保持红色

谢谢你,瑞卡

 <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方法。我该怎么办?谢谢:)