Заполнение массива arraycollection объектами из базы данных - PullRequest
0 голосов
/ 13 сентября 2011

Я новичок в 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 голосов
/ 13 сентября 2011

открытая функция xmlLoadCompleteAudit (evt: Event): void { // Эта функция является частью отчета Create и динамически учитывает 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){
0 голосов
/ 13 сентября 2011

SomeWebservice.lastResult.node <= уже является коллекцией (довольно удобно), так как вы имеете дело с коллекцией объектов, которую вы можете просто перебирать непосредственно через нее. </p>

Очевидно, что ваш 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 <= handy для нескольких свойств. </p>

И т. Д.И т.д., вы поняли.

...