2011-06-27 4 views
0

私はXMLファイルからデータグリッドにデータをロードしようとしています。プロジェクトはCairngormフレームワークにあります。 XMLファイルはWebコンテンツフォルダにあります。サービスフォルダにHTTPServiceコールがあります。FlexでHTTPServiceを使用してXMLファイルをロードする

<mx:HTTPService 
     id = "getCategory" 
     url = "assets/CategoryDept21Class1.xml" 
     resultFormat = "e4x" 
     /> 

私が1つのdataGridで選択すると、別のdataGridにXMLファイルのデータを取り込むことになっています。以下はクラスDataGridです。クラスをクリックすると、次のデータグリッドにデータが読み込まれます。

<mx:DataGrid rowCount="10" enabled="true" 
     dataProvider="{classList}" 
     verticalScrollPolicy="on" 
     click = "onClass()" 
     id="classes" width="192" top="73" left="253" height="225"> 
     <mx:columns> 
      <mx:DataGridColumn headerText="#" dataField="merchandiseClassNumber" width="50"/> 
      <mx:DataGridColumn headerText="Class Name" dataField="merchandiseClassDescription" width="150"/> 
     </mx:columns> 
    </mx:DataGrid> 

これはトリガーされるメソッドです。

private function selectClass(evt:ResultEvent):void{ 
       //this.categoryList = new XMLListCollection(evt.result.resultSet); 
       this.categoryList= evt.result.resultSet.MerchandiseAssortmentCategory; 
       var request:AMTCategoryEvent; 
       CairngormEventDispatcher.getInstance().dispatchEvent(request); 

      } 

      private function onClass():void{ 
       //Alert.show("you just clicked on a class "); 
       var event:AMTCategoryEvent = new AMTCategoryEvent(); 
       CairngormEventDispatcher.getInstance().dispatchEvent(event); 
      } 

これは私が私のデリゲート

public function getCategory() : void 
     { 
      service = ServiceLocator.getInstance().getHTTPService("getCategory") as HTTPService; 
      //Alert.show(service.url); 
      var token : AsyncToken = service.send(); 
      token.addResponder(responder); 
     } 

に()のgetCategoryを定義し、これは私が私のgetCategoryCommandに持っているものであるかです。

public function execute(event: CairngormEvent) : void{ 
      var categoryEvent: AMTCategoryEvent = event as AMTCategoryEvent; 
      var deleg:Delegate = new Delegate(this); 
      deleg.getCategory(); 
      //deleg.getCategory(categoryEvent.deptNumber, categoryEvent.classNum); 
     } 

     public function result(info:Object) :void{ 
      trace("Get Category: Success"); 
     // __model.categoryList = new XMLList(info.result.resultSet.MerchandiseAssortmentCategory); 
      var xmlbleh:XMLList=info.result.resultSet.MerchandiseAssortmentCategory.lastResult; 
      mx.controls.Alert.show(xmlbleh.toXMLString()); 
      __model.categoryList = new XMLListCollection(XMLList(info.result.resultSet.MerchandiseAssortmentCategory.lastResult)); 

    } 

何らかの理由でxmlファイルのデータをデータグリッドに読み込んでいません。私の質問がはっきりしていれば、私はこのウェブサイトの最初の質問です。しかし、どうすればいいのですか?ありがとう:)

+0

dataprovider(classList)に値を割り当てているところがありません。それとも私はそれを見逃しましたか? –

答えて

1

質問は十分ですが、役に立つかもしれない余分な情報があります。私は一連の質問を通してそれらを解明しようとします。 (これはおそらくコメントに属していますが、そこにはサイズの制限があり、煩雑になる可能性があります)

1-私はあなたの代理人のHttpServiceの参照を取得することを願っています。

2非同期サービス呼び出しが行われるまでデバッグできたらいいと思います。

3結果コールバック関数が呼び出されないと仮定します。 (またはその問題のための欠陥)。

4アプリケーションがWebサーバーにデプロイされていると仮定します。

私の前提がすべて正しい場合、問題はURLの形成にある可能性があります。私はあなたが相対パスを提供しようとしていると仮定しますが、私は絶対URLを提供しようとします。問題がURLにある場合は、サービスコールがバックグラウンドでログに記録され、404のようなエラーメッセージが表示されるはずです。

明白なエラーメッセージがない場合、これはセキュリティエラーである可能性があります。クロスドメインポリシーファイルを提供しましたか?

私の前提が間違っている場合は、必要な情報を記入してください。また、Flex SDKのバージョンも提供してください。

注:これをスタンドアロンアプリケーションとして実行している場合、Flash Builderに追加の属性を指定しないかぎり、ファイルシステムからの読み取りを許可しないセキュリティ制約があります。

+0

roottagを取り除く - resultSetのresultSetが機能しました!しかし、ありがとう! –

関連する問題