0
DataGridにitemRendererがあり、これはXMLの8つの異なるノードの値に応じてcolorBoxなどの色付きボックスを表示します。私は "あなたが最初にアプリケーションを起動するときに解決策を思いついたと思っています。しかし、dataGridをスクロールすると、それらはすべて変更されます。私はいくつかの異なる方法、カスタムMXMLコンポーネント、アクションスクリプト、両方を試してみました。名前をつけて、それは常に同じことをします。誰かがこのコードを見て、私が何をやっているのか教えてもらえますか?itemRenderer in DataGrid
MXML:
<mx:DataGrid width="100%" height="100%" dataProvider="{gridData}"
horizontalGridLines="true" horizontalGridLineColor="#666666">
<mx:columns>
<mx:DataGridColumn headerText="Publication title" dataField="pubTitle" showDataTips="true" dataTipField="dateEssentials"/>
<mx:DataGridColumn headerText="Primary function" dataField="functionPrimary" width="150"/>
<mx:DataGridColumn headerText="Lead writer" dataField="writerLead" width="150"/>
<mx:DataGridColumn headerText="Primary channel" dataField="primaryChannel" width="150"/>
<mx:DataGridColumn headerText="Primary date" dataField="primaryDate" width="100"
labelFunction="dgDateFormatter" sortCompareFunction="dgDateSorter"/>
<mx:DataGridColumn dataField="dateEssentials" itemRenderer="scripts.DGImageRenderer"
width="150" resizable="false"/>
</mx:columns>
</mx:DataGrid>
レンダラ:
import mx.events.FlexEvent;
override public function set data(value:Object):void {
if (value != null) {
super.data = value;
trace(data.pubTitle);
if (data.dateEyhpNews != null){
EyhpNews.visible = true;
trace("EYHP NEWS = " + data.dateEyhpNews);
}
if (data.dateEyhpSpotlight != null){
EyhpSpotlight.visible = true;
trace("EYHP SPOTLIGHT = " + data.dateEyhpSpotlight);
}
if (data.dateGsChs != null){
gsChs.visible = true;
trace("GS CHS = " + data.dateGsChs);
}
if (data.dateItsCHS != null){
itsChs.visible = true;
trace("ITS CHS = " + data.dateItsCHS);
}
if (data.dateProcChs != null){
procChs.visible = true;
trace("PROC CHS = " + data.dateProcChs);
}
if (data.dateEssentials != null){
essentials.visible = true;
trace("ESSENTIALS = " + data.dateEssentials);
}
if (data.dateEmail != null){
email.visible = true;
trace("EMAIL = " + data.dateEmail);
}
if (data.dateOther1 != null){
other1.visible = true;
trace("OTHER 1 = " + data.dateOther1);
}
if (data.dateOther2 != null){
other2.visible = true;
trace("OTHER 2 = " + data.pubTitle);
}
if (data.dateOther3 != null){
other3.visible = true;
trace("OTHER 3 = " + data.pubTitle);
}
trace(data.pubTitle);
}
dispatchEvent(new FlexEvent(FlexEvent.DATA_CHANGE));
}
<s:HGroup width="100%" height="100%" verticalAlign="middle" paddingLeft="5" paddingRight="5" >
<mx:Box id="EyhpNews" visible="false" backgroundColor="0x0000FF" width="8" height="8" toolTip="EYHP News" />
<mx:Box id="EyhpSpotlight" visible="false" backgroundColor="0xCC3300" width="8" height="8" toolTip="EYHP Spotlight" />
<mx:Box id="gsChs" visible="false" backgroundColor="0x006699" width="8" height="8" toolTip="Global Services CHS" />
<mx:Box id="itsChs" visible="false" backgroundColor="0xCC6600" width="8" height="8" toolTip="IT Services CHS" />
<mx:Box id="procChs" visible="false" backgroundColor="0x993399" width="8" height="8" toolTip="Procurement CHS" />
<mx:Box id="essentials" visible="false" backgroundColor="0x009933" width="8" height="8" toolTip="Essentials" />
<mx:Box id="email" visible="false" backgroundColor="0xFF6666" width="8" height="8" toolTip="Email" />
<mx:Box id="other1" visible="false" backgroundColor="0xFF6666" width="8" height="8" toolTip="Other 1" />
<mx:Box id="other2" visible="false" backgroundColor="0xFF6666" width="8" height="8" toolTip="Other 2" />
<mx:Box id="other3" visible="false" backgroundColor="0xFF6666" width="8" height="8" toolTip="Other 3" />
</s:HGroup>
グレートジョブSCHを!それはそれをして、コードも少しきれいにしました。どうもありがとうございます! –