使用数据库中的对象填充arraycollection的数组

时间:2011-09-13 06:59:26

标签: .net flex flex4.5

我是Flex的新手,我正在寻找类似的东西:

    <fx:Array>

        <fx:Object name="Jodie" country="UK" language="English"/>

        <fx:Object name="Kate" country="USA" language="English"/>

        <fx:Object name="David" country="France" language="French"/>

    </fx:Array>

但我希望从DB获得的结果中动态执行此操作。 我有一个出勤计划,我希望对象的名称是“日期”,“在”,“出” 当然,我得到的结果也是值。

任何指针?

2 个答案:

答案 0 :(得分:0)

SomeWebservice.lastResult.node&lt; =已经是一个集合(有点方便),因为你正在处理一个对象集合,你可以直接迭代它。

显然,根据使用和需要,您的XML布局会有很大差异。

您可以使用以下内容:

for each (var item:Object in GetSingleDashBoardCanvasItem.lastResult.DashboardItem)
                {

在此示例中,我的返回类型是E4X,因此第一个“节点”不适用。

XML看起来像:

  <myData>
   <DashBoardItem>  <== is like a "recordset"
         <DashboardID>22</DashboardID>
     <DashboardName>Marketing</DashboardName>
    <somevalue>22</someValue>
    </DashBoardItem>
   <DashBoardItem>  <== is like a "recordset"
         <DashboardID>56</DashboardID>
     <DashboardName>Some Other Name</DashboardName>
    <somevalue>42</someValue>
    </DashBoardItem>
   <DashBoardItem>  <== is like a "recordset"
         <DashboardID></DashboardID>
     <DashboardName></DashboardName>
    <somevalue></someValue>
    </DashBoardItem>
  </myData>

如果你知道它的单一回报,你可以直接解决一个项目。

您还可以在服务回复中运行强制转换:

someList.dataProvider='{new XMLListCollection(XMLList(GetDashReportList.lastResult).ReportTemplate)}'

以上是我决定使用回复来填充列表的地方。

请注意,如果您的xml结构正确。您可以使用它来重载方便的值,在所述列表框中我现在可以获得selectedItem.AnyXMLNodeInTheRecordIwant&lt; =多个属性的方便。

等。等等你明白了。

答案 1 :(得分:0)

public function xmlLoadCompleteAudit(evt:Event):void {     //此函数是报表创建的一部分,并动态地将Datagrid因子表示为表示返回的任何表,而不管其架构如何。     //Alert.show(getViewPreview.lastResult.List.Record[0].ImageName);

try{


    xmlList = XML(getAuditTrail.lastResult).children();
    var dgCols:Array = new Array();

    AuditGrid.columns = dgCols;
    var xmlColumns:XMLList = xmlList[0].children();
    //Alert.show(xmlColumns.length());



    for(var x:uint=0; x < xmlColumns.length(); x++){
        var xml:XML = xmlColumns[x];

        var col:DataGridColumn = new DataGridColumn();
        if (xml.name() != 'Xlabel') 
        {
            //Alert.show(xml.attribute("myField"));
            col.headerText = xml.attribute("myField");
            col.dataField = xml.name();
            dgCols.push(col);
        }
    }
    AuditGrid.columns = dgCols;                           
    AuditGrid.dataProvider = xmlList;


}catch(e:Error){