船のオブジェクトを含むグリッドテーブルがあり(データプロバイダーは船のオブジェクトの配列コレクションを受け入れます)、グリッドテーブルに船の名前と日付だけを表示します。私のshipオブジェクトには、checkListというブール値というプロパティがあります。チェックボックスアイテムレンダラーでデータバインディングとして使用されます(チェックボックスをオンまたはオフにするには)
Imageオブジェクトをコンテナに追加するときにチェックボックスをオンにします。コンテナに追加されているImageオブジェクトにはIDがあります。その画像IDをデータグリッドテーブルのshipIdと一致させ、その特定のレコードのチェックボックスをオンにします。
つまり、私のImageオブジェクトはaddイベントをリッスンし、Imageオブジェクトがコンテナに追加されたときにリッスンします。addHandler()関数を呼び出し、画像のIDを取得し、データグリッドテーブルをループして一致するIDを見つけ、チェックボックスをチェックします。ループはうまく機能します。Alert.show()を使用すると、IDと一致し、ブール値がtrueに設定されていることがわかります。チェックボックスがオンになっています。ただし、チェックボックスはチェックされていません。
これらは私のコードです。その特定のレコードのcheckListプロパティがtrueに設定されている場合でも。チェックボックスがチェックされていません。何が問題なのかわかりません。私は学生で、フレックスを始めたばかりです。誰かが私を助けてくれますか?
My MXMLビュー:My Grid Table
<s:DataGrid id="arrivalTable" x="-1" y="-1" width="302" height="205" requestedRowCount="4"
dataProvider="{myArrivalShips}" >
<s:columns>
<s:ArrayList>
<s:GridColumn dataField="shipName" headerText="Arrival Ships" itemRenderer="DesignItemRenderer.myCustomToolTipRenderer" width="130" ></s:GridColumn>
<s:GridColumn dataField="ETA" headerText="ETD" itemRenderer="DesignItemRenderer.myCheckBoxRenderer"></s:GridColumn>
</s:ArrayList>
</s:columns>
</s:DataGrid>
MyImageオブジェクトはaddイベントをリッスンします。
displayImg.addEventListener(FlexEvent.ADD,addHandler);
これは私のaddHandler()イベント関数です:
protected function addHandler(event:FlexEvent):void
{
var ImageShipId:String = Image(event.currentTarget).id;
var destination:BorderContainer = Image(event.currentTarget).owner as BorderContainer;
var destinationId:String = destination.id;
if( destinationId == "bct_HoldingArea" ){
for(var j:int = 0; j<arrivalTable.dataProvider.length; j++){
var myShip:Ship = arrivalTable.dataProvider.getItemAt(j) as Ship;
var myShipId:String = myShip.shipID.toString();
if(StringUtil.trim(myShipId) == StringUtil.trim(ImageShipId)){
myShip.checkList = true;
Alert.show("The ship name : " + myShip.shipName +"\n" + "The Ship selected : " + myShip.checkList);
}
}
}
}
私のチェックボックスアイテムレンダラー:
<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">
<s:HGroup>
<s:Label text="{data.ETD}" paddingTop="8"/>
<s:CheckBox id="myCheckBox" enabled="false" selected="{data.checkList}" />
</s:HGroup>