2011-12-23 5 views
1

私は何らかの並べ替えを作成しようとしています。このために、私はPHPファイルで作成するマルチレベルXMLを使用しています。XMLListCollectionをフィルタリングする際の問題

<klassement>  
     <reeks> 
     <reeksId>1</reeksId> 
     <reeksNaam>3de klasse</reeksNaam> 
     <ploeg> 
      <ploegNaam>Foo</ploegNaam> 
      <goalsMade>60</goalsMade> 
      <points>12</points> 
     </ploeg> 
     <ploeg> 
      <ploegNaam>bar</ploegNaam> 
      <goalsMade>10</goalsMade> 
      <points>2</points> 
     </ploeg>  
     </reeks>  
     <reeks> 
     <reeksId>2</reeksId> 
     <reeksNaam>3de klasse res</reeksNaam> 
     <ploeg> 
      <ploegNaam>Foo res</ploegNaam> 
      <goalsMade>50</goalsMade> 
      <points>12</points> 
     </ploeg> 
     <ploeg> 
      <ploegNaam>bar</ploegNaam> 
      <goalsMade>40</goalsMade> 
      <points>8</points> 
     </ploeg>  
     </reeks> 
</klassement> 

など(などがポイントになります)私はアプリケーションでhttpServiceの情報を取得します。その後、私はその情報をXMLListCollectionに入れます。今私はレベルを分離しようとしています(おそらく正しい方法ではありませんが、機能します)。私がデバッグするとき、私はそれらの2つの新しいバールには正しいものがあることがわかりますが、私がデータグリッドのdataProviderをklassementKernにする必要があるとき、私はエラー "タイプXMLの値を暗黙の強制無関係な型mx.collections:IList "

これはなぜか、これをどのように修正できるのか誰かが知っていますか?

<?xml version="1.0" encoding="utf-8"?> 
<s:NavigatorContent xmlns:fx="http://ns.adobe.com/mxml/2009" 
        xmlns:s="library://ns.adobe.com/flex/spark" 
        xmlns:mx="library://ns.adobe.com/flex/mx" 
        height="600" 
        skinClass="skins.ListContainerSkin" 
        creationComplete="httpKlassement.send()"> 
    <fx:Declarations> 
     <s:HTTPService id="httpKlassement" 
         url="http://localhost/flexScripts/klassement.php" 
         resultFormat="e4x" 
         result="showKlassement(event)"/> 
    </fx:Declarations> 
    <fx:Script> 
     <![CDATA[ 
      import mx.collections.XMLListCollection; 
      import mx.rpc.events.ResultEvent; 

      [Bindable] 
      private var klassement:XMLListCollection; 
      [Bindable] 
      private var klassementKern:XML; 
      [Bindable] 
      private var klassementReserve:XML; 


      protected function showKlassement(event:ResultEvent):void 
      { 
       klassement = new XMLListCollection(event.result.reeks); 
       klassementKern = klassement[0]; 
       klassementReserve = klassement[1]; 
      } 
     ]]> 
    </fx:Script> 
    <s:layout> 
     <s:VerticalLayout gap="10" paddingLeft="10" paddingTop="10" paddingRight="10" paddingBottom="10"/> 
    </s:layout> 

    <s:DataGrid width="760" height="230" dataProvider="{klassementKern}"> 
     <s:columns> 
      <s:ArrayCollection> 
       <s:GridColumn headerText="Ploeg" dataField="ploeg.ploegNaam"/> 
       <s:GridColumn headerText="WG" dataField="ploeg.aantalGespeeld"/> 
       <s:GridColumn headerText="W" dataField="ploeg.aantalGewonnen"/> 
       <s:GridColumn headerText="V" dataField="ploeg.aantalVerloren"/> 
       <s:GridColumn headerText="G" dataField="ploeg.aantalGelijk"/> 
       <s:GridColumn headerText="D+" dataField="ploeg.goalenGemaakt"/> 
       <s:GridColumn headerText="D-" dataField="ploeg.goalenTegen"/> 
       <s:GridColumn headerText="Punten" dataField="ploeg.punten"/> 
       <s:GridColumn headerText="DS" dataField="ploeg.doelpuntensaldo"/> 
      </s:ArrayCollection> 
     </s:columns> 
    </s:DataGrid> 
</s:NavigatorContent> 
+0

Entschuldi、焼きそばNiederländischイストのNICHTので – SQLiteNoob

+0

はあなたが提供しているXMLでファイルdata.xmlファイルを作成することで試してみました...腸。その作業、エラーはありません。 klassement.phpが適切なxmlを提供していることを確認してください。あなたは火かき棒でサーバーの応答を確認できます。 – Diode

+0

私はchromeでphpスクリプトを開くと、私は正しいビルドklassement、klassementKernとklassementReserveが正しい情報で満たされているデバッグするときに私に正しいxml構造を与えますが、私はDataGridの情報を取得しません。私は今日の午後にオンラインにしました。 phpファイルへのリンクはhttp://www.dehertoghnathalie2011.dreamhosters.com/flexScripts/klassement.phpです(ドメイン名は別のものですが、同じアカウント、新しいフォルダにphpファイルをドロップしなければなりません)。今はデータグリッドとタイトルをハードコーディングして解決しましたが、httpsService –

答えて

0

を、私は解決策を見つけました。他の誰かが同じ問題を抱えている場合に備えて、私は新しいコードを投稿します。

<?xml version="1.0" encoding="utf-8"?> 
<s:NavigatorContent xmlns:fx="http://ns.adobe.com/mxml/2009" 
        xmlns:s="library://ns.adobe.com/flex/spark" 
        xmlns:mx="library://ns.adobe.com/flex/mx" 
        creationComplete="httpKlassement.send()" 
        xmlns:components="components.*"> 

    <fx:Declarations> 
     <s:HTTPService id="httpKlassement" 
         url="http://www.dehertoghnathalie2011.dreamhosters.com/flexScripts/klassement.php" 
         result="showKlassement(event)" 
         fault="httpKlassement_faultHandler(event)"/> 
    </fx:Declarations> 
    <fx:Script> 
     <![CDATA[ 
      import mx.collections.IList; 
      import mx.collections.XMLListCollection; 
      import mx.controls.Alert; 
      import mx.rpc.events.FaultEvent; 
      import mx.rpc.events.ResultEvent; 

      [Bindable] 
      private var klassement:ArrayCollection; 
      [Bindable] 
      private var klassementKern:Object; 
      [Bindable] 
      private var kern:IList; 
      [Bindable] 
      private var klassementReserve:Object; 
      [Bindable] 
      private var reserve:IList; 


      protected function showKlassement(event:ResultEvent):void 
      { 
       klassement = event.result.klassement.reeks; 
       klassementKern = klassement[0]; 
       kern = klassementKern.ploeg; 
       klassementReserve = klassement[1]; 
       reserve = klassementReserve.ploeg; 
      } 

      protected function httpKlassement_faultHandler(event:FaultEvent):void 
      { 
       Alert.show(event.fault.faultString, "Foutmelding"); 
      } 

     ]]> 
    </fx:Script> 
    <s:layout> 
     <s:VerticalLayout gap="10" paddingLeft="10" paddingTop="0" paddingRight="10" paddingBottom="10"/> 
    </s:layout> 

    <s:DataGrid width="760" height="235" dataProvider="{kern}"> 
     <s:columns> 
      <s:ArrayCollection>   
       <s:GridColumn headerText="Ploeg" dataField="ploegNaam"/> 
       <s:GridColumn headerText="WG" dataField="aantalGespeeld"/> 
       <s:GridColumn headerText="W" dataField="aantalGewonnen"/> 
       <s:GridColumn headerText="V" dataField="aantalVerloren"/> 
       <s:GridColumn headerText="G" dataField="aantalGelijk"/> 
       <s:GridColumn headerText="D+" dataField="goalenGemaakt"/> 
       <s:GridColumn headerText="D-" dataField="goalenTegen"/> 
       <s:GridColumn headerText="Punten" dataField="punten"/> 
       <s:GridColumn headerText="DS" dataField="doelpuntensaldo"/> 
      </s:ArrayCollection> 
     </s:columns> 
    </s:DataGrid> 

    <s:DataGrid width="760" height="235" dataProvider="{reserve}"> 
     <s:columns> 
      <s:ArrayCollection>   
       <s:GridColumn headerText="Ploeg" dataField="ploegNaam"/> 
       <s:GridColumn headerText="WG" dataField="aantalGespeeld"/> 
       <s:GridColumn headerText="W" dataField="aantalGewonnen"/> 
       <s:GridColumn headerText="V" dataField="aantalVerloren"/> 
       <s:GridColumn headerText="G" dataField="aantalGelijk"/> 
       <s:GridColumn headerText="D+" dataField="goalenGemaakt"/> 
       <s:GridColumn headerText="D-" dataField="goalenTegen"/> 
       <s:GridColumn headerText="Punten" dataField="punten"/> 
       <s:GridColumn headerText="DS" dataField="doelpuntensaldo"/> 
      </s:ArrayCollection> 
     </s:columns> 
    </s:DataGrid> 
</s:NavigatorContent> 
0

あなたはおそらく、サーバーから他の何かを取得しているので、一定のharcoded XMLとの私の作品、:

<?xml version="1.0" encoding="utf-8"?> 
<s:Application 
    xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    xmlns:mx="library://ns.adobe.com/flex/mx" 
    minWidth="955" minHeight="600" 
    creationComplete="showKlassement(event)"> 

    <fx:Script> 
     <![CDATA[ 
      import mx.collections.XMLListCollection; 
      import mx.events.FlexEvent; 

      private const MY_XML:XML = 
       <klassement>  
         <reeks> 
         <reeksId>1</reeksId> 
         <reeksNaam>3de klasse</reeksNaam> 
         <ploeg> 
          <ploegNaam>Foo</ploegNaam> 
          <goalsMade>60</goalsMade> 
          <points>12</points> 
         </ploeg> 
         <ploeg> 
          <ploegNaam>bar</ploegNaam> 
          <goalsMade>10</goalsMade> 
          <points>2</points> 
         </ploeg>  
         </reeks>  
         <reeks> 
         <reeksId>2</reeksId> 
         <reeksNaam>3de klasse res</reeksNaam> 
         <ploeg> 
          <ploegNaam>Foo res</ploegNaam> 
          <goalsMade>50</goalsMade> 
          <points>12</points> 
         </ploeg> 
         <ploeg> 
          <ploegNaam>bar</ploegNaam> 
          <goalsMade>40</goalsMade> 
          <points>8</points> 
         </ploeg>  
         </reeks> 
       </klassement>;     

      [Bindable] 
      private var klassement:XMLListCollection; 
      [Bindable] 
      private var klassementKern:XML; 
      [Bindable] 
      private var klassementReserve:XML; 

      private function showKlassement(event:FlexEvent):void { 
       klassement = new XMLListCollection(MY_XML.reeks); 
       klassementKern = klassement[0]; 
       klassementReserve = klassement[1]; 
      } 
     ]]> 
    </fx:Script> 
    <s:layout> 
     <s:VerticalLayout gap="10" paddingLeft="10" paddingTop="10" paddingRight="10" paddingBottom="10"/> 
    </s:layout> 

    <s:DataGrid width="760" height="230" dataProvider="{klassement}"> 
     <s:columns> 
      <s:ArrayCollection> 
       <s:GridColumn headerText="Ploeg" dataField="ploeg.ploegNaam"/> 
       <s:GridColumn headerText="WG" dataField="ploeg.aantalGespeeld"/> 
       <s:GridColumn headerText="W" dataField="ploeg.aantalGewonnen"/> 
       <s:GridColumn headerText="V" dataField="ploeg.aantalVerloren"/> 
       <s:GridColumn headerText="G" dataField="ploeg.aantalGelijk"/> 
       <s:GridColumn headerText="D+" dataField="ploeg.goalenGemaakt"/> 
       <s:GridColumn headerText="D-" dataField="ploeg.goalenTegen"/> 
       <s:GridColumn headerText="Punten" dataField="ploeg.punten"/> 
       <s:GridColumn headerText="DS" dataField="ploeg.doelpuntensaldo"/> 
      </s:ArrayCollection> 
     </s:columns> 
    </s:DataGrid> 
</s:Application> 
+0

ではより良いでしょうが、ただ1つのDataGridを取得していませんか?私は 'Kern'と 'Reserve'のために2つ、1つ必要です。そして、ハードコードすればデータを表示するのはなぜですか、httpServiceを使用するのではないのですか?私はそれが奇妙な:)を見つける(これは私が= Dで新しいので) –

+0

多分httpServiceは、エラーテキストのような何かを提供するため? –

+0

httpServiceは私に適切な情報を与えません。 PHPファイルへのリンク(上記のコメントにはXMLを作成しています)。私がそれをデバッグすると、私はすべての変数の正しい情報を見ることができます –

関連する問題