пытаясь назначить XML в определенные поля данных сетки данных - PullRequest
1 голос
/ 26 марта 2011

Возвращаясь к гибкости, после того как вы не используете его некоторое время, пытаясь загрузить некоторый xml (сгенерированный php) в сетку данных с помощью провайдера данных, чтобы создать простую сетку, показывающую дневные максимальные и низкие температуры в течение недели. Я могу получить данные для отображения в моей таблице данных, но столбцы загружаются в случайном порядке. (поэтому пятница наступает раньше понедельника и т. д.) Поэтому я просто пытаюсь выяснить, как назначить конкретные данные конкретным полям данных.

Вот гибкий код; (обновлено до рабочего кода. Обратите внимание, что поля данных просто содержат имена тегов xml и / или имена тегов внутри этих тегов)

<?xml version="1.0" encoding="utf-8"?>

<fx:Declarations>
    <s:HTTPService id="weather"  url="http://localhost/weather/index.php" result="weather_resultHandler(event)" fault="weather_faultHandler(event)" />
</fx:Declarations>


<fx:Script>
    <![CDATA[
        import mx.collections.ArrayCollection;
        import mx.controls.Alert;
        import mx.rpc.events.FaultEvent;
        import mx.rpc.events.ResultEvent;

        //Setup array making sure to import Array Collection
        [Bindable]
        public var mydata:ArrayCollection = new ArrayCollection();

        protected function weather_resultHandler(event:ResultEvent):void
        {
            trace(event.result.weather.city);
            //mydata is our array and we are adding the info to it.  Show the xml file.
            mydata = event.result.weather.city;             
        }

        protected function weather_faultHandler(event:FaultEvent):void
        {
            //import Alert so we can use this class
            Alert.show("There is a problem with the data connection");
        }
    ]]>
</fx:Script>


<mx:DataGrid x="49" y="226" id="weatherGrid" dataProvider="{mydata}">
    <mx:columns>
        <mx:DataGridColumn headerText="City" dataField="name"/> 
        <mx:DataGridColumn width="40" headerText="High" dataField="mon.high"/>
        <mx:DataGridColumn width="40" headerText="Low" dataField="mon.low"/>                
        <mx:DataGridColumn width="40" headerText="High" dataField="tues.high"/>
        <mx:DataGridColumn width="40" headerText="Low" dataField="tues.low"/>
        <mx:DataGridColumn width="40" headerText="High" dataField="wed.high"/>
        <mx:DataGridColumn width="40" headerText="Low" dataField="wed.low"/>
        <mx:DataGridColumn width="40" headerText="High" dataField="thurs.high"/>
        <mx:DataGridColumn width="40" headerText="Low" dataField="thurs.low"/>
        <mx:DataGridColumn width="40" headerText="High" dataField="fri.high"/>
        <mx:DataGridColumn width="40" headerText="Low" dataField="fri.low"/>
        <mx:DataGridColumn width="40" headerText="High" dataField="sat.high"/>
        <mx:DataGridColumn width="40" headerText="Low" dataField="sat.low"/>
        <mx:DataGridColumn width="40" headerText="High" dataField="sun.high"/>
        <mx:DataGridColumn width="40" headerText="Low" dataField="sun.low"/>
    </mx:columns>
</mx:DataGrid>

И xml, который генерирует php, таков; (отредактировано на основе комментария)

<?xml version="1.0" encoding="utf-8" ?><weather><city>
    <name>London</name>
    <mon>
        <high>-2</high>
        <low>-10</low>
    </mon>
    <tues>
        <high>-1</high>

        <low>-5</low>
    </tues>
    <wed>
        <high>0</high>
        <low>-2</low>
    </wed>
    <thurs>

        <high>3</high>
        <low>0</low>
    </thurs>
    <fri>
        <high>5</high>
        <low>2</low>
    </fri>

    <sat>
        <high>8</high>
        <low>4</low>
    </sat>
    <sun>
        <high>10</high>
        <low>6</low>

    </sun>
</city><city>
    <name>Toronto</name>
    <mon>
        <high>-5</high>
        <low>-10</low>
    </mon>

    <tues>
        <high>-8</high>
        <low>-15</low>
    </tues>
    <wed>
        <high>-2</high>
        <low>-7</low>

    </wed>
    <thurs>
        <high>3</high>
        <low>-3</low>
    </thurs>
    <fri>
        <high>6</high>

        <low>0</low>
    </fri>
    <sat>
        <high>7</high>
        <low>3</low>
    </sat>
    <sun>

        <high>9</high>
        <low>4</low>
    </sun>
</city></weather>

1 Ответ

1 голос
/ 27 марта 2011

Я бы посоветовал вам перебрать xml и преобразовать его в модель данных, чтобы с ним было легче работать. Что-то вроде

WeatherModel
   monday
      high
      low
   tuesday
      high
      low
   wednesday
      high
      low
   thursday
      high
      low
   friday
      high
      low
   saturday
      high
      low
   sunday
      high
      low

Таким образом, вы можете просто добавить фактический день в поле данных столбца. Вам не нужно использовать прямой XML, который раздражает работать с кем угодно. Просто нужно сопоставить его с объектом. Для выполнения этой работы вы можете использовать сопоставитель объектов XML Spicefactory .

...