データグリッドテーブルがあります。dataGridテーブルのgridColumnは「DropDownListItemRenderer」を呼び出します。同じアイテムレンダラーを使用して、dataField名に従ってドロップダウンリストの内容を変更したいと思います。したがって、たとえば、dataField名がcolorの場合、ドロップダウンには赤、青、緑の電気ショック療法が含まれます。dataField名がfuritsの場合、ドロップダウンリストにはさまざまなフルーツオプションが含まれます。
私のアイテムレンダラーのコードを見てください。dropDownListDataというバインド可能な配列コレクションを作成して、上記を実行しようとしました。オーバーライドセットデータ関数で、dataField名を取得します。データフィールド名を使用して、それに応じて配列コレクションに項目を追加します。
プログラムを実行すると、ドロップダウンリストに正しいデータが表示されますが。ドロップダウンリストのデータは、ドロップダウンリストが選択されるたびに繰り返され、増加します。
私はこれを行うために正しい方法を使用していないと思います。だから誰かが私がこれを行う方法を教えてもらえますか?plsは誰かがこれで私を助けることができますか?質問が明確でない場合は、言い換えてみます。
ありがとう :)
これは私の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>
これは私のDropDownListアイテムレンダラーです:
<s:GridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" clipAndEnableScrolling="true">
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import spark.components.gridClasses.GridColumn;
import spark.events.IndexChangeEvent;
public var cName:String;
[Bindable]
private var dropDownListData:ArrayCollection = new ArrayCollection();
protected function onCbChange(event:IndexChangeEvent):void
{
var value:String = (event.currentTarget as DropDownList).selectedItem;
data[column.dataField] = value;
}
override public function set data(value:Object):void
{
super.data = value;
cName = column.dataField;
if(cName == "color"){
dropDownListData.addItem("red");
dropDownListData.addItem("blue");
dropDownListData.addItem("green");
}
else if(cName == "furits"){
dropDownListData.addItem("banana");
dropDownListData.addItem("apple");
dropDownListData.addItem("grapes");
}
}
]]>
</fx:Script>
<s:DropDownList id="cb" width="100%" change="onCbChange(event)" requireSelection="true" dataProvider="{dropDownListData}"/>
これは私のオブジェクトクラスです:
public class ColourItems
{
public var label1:String;
public var quant:String;
public var color:String;
public var furits:String;
}