Flex 3: Wie bekomme ich die DataGridColumn-das Datenfeld in seiner ItemRenderer?
Ich versuche zu erreichen das Datenfeld einer DataGridColumn in der itemRenderer. Unten ist die dataGrid:
<mx:Script>
<![CDATA[
[Bindable] public var weeksOfMoth:ArrayCollection = new ArrayCollection([
{monday:30, tuesday:31, wednesday:1, thursday:2, friday:3, saturday:4, sunday:5},
{monday:6, tuesday:7, wednesday:8, thursday:9, friday:10, saturday:11, sunday:12},
{monday:13, tuesday:14, wednesday:15, thursday:16, friday:17, saturday:18, sunday:19},
{monday:20, tuesday:21, wednesday:22, thursday:23, friday:24, saturday:25, sunday:26},
{monday:27, tuesday:28, wednesday:29, thursday:30, friday:1, saturday:2, sunday:3}
]);
]]>
</mx:Script>
<mx:DataGrid dataProvider="{weeksOfMoth}" >
<mx:columns>
<mx:DataGridColumn itemRenderer="view.DateRenderer" dataField="monday" />
<mx:DataGridColumn itemRenderer="view.DateRenderer" dataField="tuesday" />
<mx:DataGridColumn itemRenderer="view.DateRenderer" dataField="wednesday" />
<mx:DataGridColumn itemRenderer="view.DateRenderer" dataField="thursday" />
<mx:DataGridColumn itemRenderer="view.DateRenderer" dataField="friday" />
<mx:DataGridColumn itemRenderer="view.DateRenderer" dataField="saturday" />
<mx:DataGridColumn itemRenderer="view.DateRenderer" dataField="sunday" />
</mx:columns>
</mx:DataGrid>
Und das ist mein ItemRenderer:
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" >
<mx:Box >
<!-- How do I get the dataField here?? -->
<mx:Label text="{data[dataField]}" />
</mx:Box>
</mx:Canvas>
In der set-Funktion Daten der itemRenderer, erhalte ich eine ganze Woche (das ist ok), aber der itemRenderer nicht weiß, an welchem Tag zu verwenden, da das Datenfeld ist unbekannt. Weiß jemand, wie dies zu erreichen Datenfeld in der itemRenderer?
InformationsquelleAutor Maurits de Boer | 2010-08-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Kommentar von http://www.Flextras.com hat mir geholfen, um die Lösung zu finden. Ich kann in der Tat verwenden
listData.dataField
, aber zuerst dieIDropInListItemRenderer
Klasse umgesetzt werden muss.Den letzten
ItemRenderer
:InformationsquelleAutor Maurits de Boer
Verwenden Sie die DataGridListData Klasse, die übergeben wird in der renderer. Es enthält eine dataField-Eigenschaft.
Ich bin mir ziemlich sicher, dass dies funktionieren sollte:
Als Sie entdeckt, hat nichts zu tun w/ Flex-2. Viele Klassen bereits implementiert ist der IDropInListItemRenderer-Schnittstelle. Off-topic; sollten Sie überlegen, wieder arbeiten Sie Ihren itemRenderer zu verwenden, weniger Container. Warum nicht einfach ein Etikett? Tun Sie wirklich brauchen, die neben 2 Behälter?
Es ist eigentlich nur ein Teil der gesamten renderer, in meinem eigentlichen code, den Sie wirklich brauchen die Container. Aber du hast Recht, das Beispiel hier verwendet werden können, kleiner.
Ich bin froh, Sie haben es ausgearbeitet. wenn Sie denken, dass meine Antwort Ihnen geholfen, das Problem zu lösen, fühlen Sie sich frei, um etwas Liebe zeigen und geben meine Antwort eine Stimme. 😉
InformationsquelleAutor JeffryHouser
Die Sie nicht umsetzen müssen die IDropInListItemRenderer.
Dies ist genug:
Den konkreten listData-Typ DataGridListData, aber das Hotel selbst ist zusammengenommen BaseListData, denn einen renderer, der verwendet werden kann, in verschiedenen Szenarien. Jedoch in diesem Szenario wissen wir es DataGridListData, daher können wir einfach werfen Sie es, um Zugriff auf die dataField-Eigenschaft.
if (listData is DataGridListData) { ... }
InformationsquelleAutor Creynders
Den folgenden arbeiten für eine Spark-Elementrenderer basierend in ein MX AdvancedDataGrid:
InformationsquelleAutor MonoThreaded
Sogar noch einfacher:
verwenden Sie einfach die Eigenschaften
advancedDataGridListData
im MXAdvancedDataGridItemRenderersdataGridListData
im MXDataGridItemRendererAuskunft.
InformationsquelleAutor JoriDor
Durchschnittlich GridItemRenderer-es ist ein
So, in Ihrem Fall sollte dies funktionieren:
InformationsquelleAutor UnknownJoe