2009-08-24 8 views
0

Wenn der DataProvider für ein DataGrid ein Array von Objekten ist, wie setze ich das DataField jeder Spalte auf eine Eigenschaft des Objekts.Zuweisen eines Arrays von Objekten zu einem DataGrid

Ich habe eine Arraycollection (sagen wir a), wo jedes Element ist ein Objekt Zum Beispiel a[i] = data:Object Wo die Objektdaten einige Subproperties hat - data.name, data.title, data.content usw.

Ich habe ein Datagrid, in dem ich möchte um diese Daten anzuzeigen.

Also habe ich:

<mx:DataGrid id="entries" dataProvider="{resultRSS}"> 
    <mx:columns> 
<mx:Array> 
    <mx:DataGridColumn headerText="Title" dataField="data.title"/> 
    <mx:DataGridColumn headerText="Date" dataField="data.created"/> 
</mx:Array> 
    </mx:columns> 
</mx:DataGrid> 

Dies scheint nicht überhaupt zu arbeiten. Ich bekomme ein leeres DataGrid. Wie sollte ich die Eigenschaft dataField zuweisen, damit sie korrekt angezeigt wird? Ich habe auch versucht {data.title}.

Danke.

Edit: Probe meiner Daten

-[]arraycollection 
--[0] 
----id="id1" 
----data. 
------title="something" 
------name="something" 
------text="some html" 
--[1] 
----id="id2" 
----data. 
------title="something2" 
------name="something2" 
------text="some html2" 

und Tabelle sollte

|title  |name  |text  | 
================================= 
|something |something |some html| 
|something2|something2|somehtml2| 

Antwort

2

hier ist deine Antwort

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="initialize()"> 

<mx:Script> 
    <![CDATA[ 
     import mx.collections.HierarchicalData; 

     var a:Array = new Array(); 
     var o:Object = {}; 
     private function initialize():void{ 
      o["text"]="hello"; 
        o["desc"]="Rahul"; 
      a.push(o); 
     } 

    ]]> 
</mx:Script> 


    <mx:AdvancedDataGrid width="100%" height="100%" sortExpertMode="true" id="adg1" designViewDataType="tree" dataProvider="{new HierarchicalData(a)}"> 
     <mx:columns> 
      <mx:AdvancedDataGridColumn headerText="text" dataField="text"/> 
      <mx:AdvancedDataGridColumn headerText="desc" dataField="desc"/> 
     </mx:columns> 
    </mx:AdvancedDataGrid> 

</mx:Application> 

bearbeiten - ok jetzt meine Antwort verwerfen nach Ihren Daten versuchen diese

var a:Array = new Array(); 
     var o:Object = {};  
     private function stringArrayToObjectArray():void{ 
      o["id"]="mauj"; 
      var oj:Object=new Object(); 
      oj["title"]="aaa"; 
      o["data"]=oj; 

      var oj1:Object=new Object(); 
      oj1["id"]="mauj2"; 
      var oj2:Object=new Object(); 
      oj2["title"]="qqqq"; 
      oj1["data"]=oj2; 


      a.push(o);  
      a.push(oj1);   
     } 

     private function some_labelFunc(item:Object,th:Object):String { 
       return item.data.title; 
      } 

    ]]> 
</mx:Script> 



    <mx:AdvancedDataGrid width="100%" height="100%" sortExpertMode="true" id="adg1" dataProvider="{a}"> 
     <mx:columns> 
      <mx:AdvancedDataGridColumn headerText="COMPANIES" dataField="data" labelFunction="some_labelFunc"/> 
     </mx:columns> 
    </mx:AdvancedDataGrid> 

</mx:Application> 

versuchen Sie es tut mir leid für solch einen schlechten Code

+0

Aber die Sache ist, ich will es nicht als Baum anzeigen. Ich möchte es als normale Tabelle anzeigen. Die einzige Sache ist, dass die Daten für das Datenfeld ein Objekt tiefer als üblich sind. –

+0

zum Entfernen von Baum Typ einfach HierarchicalData entfernen und Ihre Sammlung hinzufügen und für Daten können Sie eine Probe Ihrer Daten zur Verfügung stellen –

+0

Ich habe ein Beispiel für meine Daten hinzugefügt. –

Verwandte Themen