私の郡の環境資源を管理するためのオープンソース アプリケーションを作成しています。
データグリッドで使用している itemrenderer (コンボボックス) のデータプロバイダーに問題があります。アプリケーションは動作しますが、itemrenderer dataprovider がセッターによる更新時にデータを再割り当てされないという警告が表示されます。コンボボックス itemrenderer dataprovider を再割り当てする必要がない場合でも、ベスト プラクティスとして、この警告を解決したいと考えています。
これは、itemrenderer の parentDocument で Web サービスの結果から入力された配列コレクションとして dataprovider データを取得するために使用する通常のコードです。
//コンボボックスitemrendererのファーマーarrayCollection値を設定します 【綴じる】 private var _acFarmers:ArrayCollection=new ArrayCollection; public function set acFarmers(acFarmers:ArrayCollection):void{ _acFarmers=acFarmers; } // マシンの ArrayCollection 値を取得 public function get acFarmers():ArrayCollection{ _acFarmers を返します。 }
これは、datagrid itemrenderer のコードです (datagrid の関心のある列のみを表示しています)。
<mx:DataGridColumn headerText="Agricoltore" dataField="farmerId" width="200" rendererIsEditor="true" editable="false">
<mx:itemRenderer>
<fx:Component id="cmpCmbFarmers">
<mx:HBox>
<s:ComboBox width="200"
id="cmbFarmers"
dataProvider="{outerDocument.acFarmers}"
labelField="companyName"
change="onSelectionChange(event)"
>
<fx:Script>
<![CDATA[
import mx.controls.dataGridClasses.DataGridListData;
import mx.controls.listClasses.BaseListData;
import mx.events.ListEvent;
private var _ownerData:Object;
private function setSelected():void {
}
override public function set data(value:Object):void{
if(value != null) {
super.data=value;
_ownerData=value;
if(value.collectingMachineId!==null){
for each(var dp:Object in cmbFarmers.dataProvider){
var dpFarmerId:String=dp.farmerId
var dataFarmerId:String=value.farmerId;
if(dpFarmerId==dataFarmerId){
cmbFarmers.selectedItem=dp;
}
}
} else {
cmbFarmers.selectedIndex=0;
data.farmerId=cmbFarmers.selectedItem.farmerId;
}
}
}
import spark.events.IndexChangeEvent;
protected function onSelectionChange(event:IndexChangeEvent):void
{
data.farmerId=cmbFarmers.selectedItem.farmerId;
}
]]>
</fx:Script>
</s:ComboBox>
</mx:HBox>
</fx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>
このコードは、データグリッド データ サービスを呼び出し、サービスの再応答時にデータグリッド アレイ コレクションを設定する前に、itemrenderer サービスを呼び出してコンボ ボックス データを取得すると機能します。
ただし、コンボボックスのデータプロバイダーは、そのデータプロバイダー (_acFarmers) で設定された関数の後に変更を取得しないため、警告が表示されます。
これはプロジェクト全体で唯一の警告ですが、解決方法を管理できませんでした。
助けていただければ幸いです。
ありがとう
パオロ