Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.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
Apache flex Flex:如何重用项目渲染器?_Apache Flex_Datagrid_Flex4_Itemrenderer - Fatal编程技术网

Apache flex Flex:如何重用项目渲染器?

Apache flex Flex:如何重用项目渲染器?,apache-flex,datagrid,flex4,itemrenderer,Apache Flex,Datagrid,Flex4,Itemrenderer,我有一个数据网格表,dataGrid表中的gridColumn调用“DropDownListItemRenderer”。使用相同的项目渲染器,我希望根据数据字段名称更改下拉列表中的内容。例如,如果数据字段名为color,则下拉列表将包含红色、蓝色、绿色等。如果数据字段名为furits,则下拉列表将包含不同的选项 如果你看我的项目渲染器中的代码。我试图通过创建一个名为dropDownListData的可绑定数组集合来实现上述目的。在覆盖设置数据函数中我获取数据字段名,使用数据字段名在数组集合中添加

我有一个数据网格表,dataGrid表中的gridColumn调用“DropDownListItemRenderer”。使用相同的项目渲染器,我希望根据数据字段名称更改下拉列表中的内容。例如,如果数据字段名为color,则下拉列表将包含红色、蓝色、绿色等。如果数据字段名为furits,则下拉列表将包含不同的选项

如果你看我的项目渲染器中的代码。我试图通过创建一个名为dropDownListData的可绑定数组集合来实现上述目的。在覆盖设置数据函数中我获取数据字段名,使用数据字段名在数组集合中添加相应的项

尽管在运行程序时,下拉列表中填充了正确的数据。每次选择下拉列表时,下拉列表中的数据都会重复并增加

我认为我没有使用正确的方法来做这件事。有人能告诉我怎么做吗?有人能帮我吗?请让我知道,如果我的问题不清楚,我会尝试重新措辞

谢谢:)

这是我的MXML文件:

     <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
           xmlns:s="library://ns.adobe.com/flex/spark" 
           xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">    
<fx:Script>
    <![CDATA[                
        import FrontEndObjects.ColourItems;         
        import mx.collections.ArrayCollection;          
        import spark.events.IndexChangeEvent;

        [Bindable]
        private var order:ArrayCollection = new ArrayCollection();  

        private function addOrder():void{               
            var orderItems:ColourItems = new ColourItems();
            order.addItem(orderItems);              
        }   

    ]]>
</fx:Script>    
<s:BorderContainer x="175" y="101" width="606" height="289">
    <s:DataGrid id="myDG" x="53" y="27" width="516" height="201" dataProvider="{order}"
                editable="true" variableRowHeight="true">
        <s:columns>
            <s:ArrayList>
                <s:GridColumn dataField="label1" headerText="Order #" editable="true"/>             
                <s:GridColumn dataField="quant" headerText="Qty" editable="true"/>              
                <s:GridColumn dataField="color" headerText="Color" editable="true" rendererIsEditable="true" itemRenderer="myRenderers.DropDownListItemRenderer"/>  
                <s:GridColumn dataField="furits" headerText="Furits" editable="true" rendererIsEditable="true" itemRenderer="myRenderers.DropDownListItemRenderer"/>                                    
            </s:ArrayList> 
        </s:columns >
    </s:DataGrid>   
    <s:Button x="499" y="236" label="add" click="addOrder()" /> 
</s:BorderContainer>    

在itemRenderer的setData方法中,在执行添加项之前,您应该检查列表中已经存在哪些数据,然后将目标列设置为可编辑:editable=“true”renderiseditable=“true”。当您单击单元格时,网格将调用itemrenderer中的set data(值:Object)方法,在该方法中,您将越来越多地在下拉列表中添加项。您可以轻松将其修复为禁用可编辑单元格:

<s:GridColumn dataField="color" headerText="Color" editable="false" itemRenderer="myRenderers.DropDownListItemRenderer"/>  
<s:GridColumn dataField="furits" headerText="Furits" editable="false" itemRenderer="myRenderers.DropDownListItemRenderer"/>


难以理解此代码,请创建“基于一个文件”示例Hi llya!“基于一个文件”是指将所有内容放在一个MXML文件中吗?现在,我再次编辑了我的问题,以显示我的所有代码。你可以复制粘贴代码并在你的电脑上运行。我有一个MXML文件,一个项目渲染器文件和一个colourItems类。希望这更清楚。请让我知道我能做些什么,使我的代码更清楚给你。谢谢:)嗨。。我如何做一个测试,看看它是否已经存在??你能给我举个例子吗?我对felx非常陌生。使用调试模式。这个问题本身实际上产生了更多的问题:-)但是,是的,看看调试模式中的变量
public class ColourItems
{
    public var label1:String;
public var quant:String;
public var color:String;    
public var furits:String;       
}
<s:GridColumn dataField="color" headerText="Color" editable="false" itemRenderer="myRenderers.DropDownListItemRenderer"/>  
<s:GridColumn dataField="furits" headerText="Furits" editable="false" itemRenderer="myRenderers.DropDownListItemRenderer"/>