カスタムコンポーネント内にデータグリッドがあります。このDGは、そのデータプロバイダとしてネストされたオブジェクトを受け取り、そしてので、私のデータグリッドは次のようにレンダリングされます:DataGridの再レンダリング
<mx:DataGrid id="privilegesDG" dataProvider="{privArray}" width="100%" variableRowHeight="true">
<mx:columns>
<mx:DataGridColumn dataField="Name" />
<mx:DataGridColumn dataField="Alias" />
<mx:DataGridColumn headerText="Roles Assigned" dataField="roles">
<mx:itemRenderer>
<fx:Component>
<mx:VBox creationComplete="box1_creationCompleteHandler(event)">
<fx:Script>
<![CDATA[
import com.pm.modules.events.UpdateDBEvent;
import mx.containers.HBox;
import mx.controls.Label;
import mx.controls.LinkButton;
import mx.events.FlexEvent;
[Bindable]private var prID:int;
protected function box1_creationCompleteHandler(event:FlexEvent):void
{
for each(var temp:Object in data.roles){
prID = temp.rid;
var hgrp:HBox = new HBox();
hgrp.autoLayout = false;
var lbl:Label = new Label();
lbl.text = temp.rname;
var lb:LinkButton = new LinkButton();
lb.label = 'X';
lb.focusEnabled = true;
lb.addEventListener(MouseEvent.CLICK,handleClick);
hgrp.addElement(lbl);
hgrp.addElement(lb);
this.addElement(hgrp);
}
}
protected function handleClick(event:MouseEvent):void{
dispatchEvent(new UpdateDBEvent(UpdateDBEvent.ON_DELETE_PRIVILEGE_ROLE_MAP,0,0,0,prID,0,true));
}
]]>
</fx:Script>
</mx:VBox>
</fx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>
</mx:columns>
</mx:DataGrid>
だから私は、ネストされたデータを表示するインラインのitemRendererを持っています。今、更新操作が発生すると、このデータグリッドを再設定する関数が呼び出されます。しかし、ネストされたデータdsntが表示される列には何も表示されません。
私はネットを検索しましたが、maybはこのコンポーネントのupdateDisplayList関数を呼び出しましたか?
だから私はこのようsmthing試してみました:
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void{
super.updateDisplayList(unscaledWidth,unscaledHeight);
}
protected function handleResult(event:ResultEvent):void{
if(event.result.toString() == 'false')
Alert.show("Could not perform operation");
else{
RO.getPrivilegesAndRoles(); //re-populates DG
invalidateDisplayList();
}
}
私は本当に私はその関数内に置くSHLD何を知りません。私はupdateDisplayListの中の再配置機能を呼び出すべきですか?私はそれを試みましたが、それは仕事をdsnt ...
なぜなら、私はRepeaterを使用できない理由は、data.rolesは配列の配列であり、動的インデックスを持っているからです...つまり、ロールの数はさまざまです。data [roles] [0] => array()、data [役割] [1] =>配列().. 0またはn個の役割があります..私はこの配列にアクセスするためにforループを使用する必要があります..あなたの2番目のオプションを詳述できますか?私は初心者ですが、多分私はいくつかのコードサンプルを表示することができます..? – Lin