0

プロジェクトには、XMLファイルを参照してアップロードし、それをデータグリッドに表示し、グリッドを編集してから、コンテンツをデータベースに保存するという要件があります。特定のフォルダーからXMLを取得してデータグリッドに表示する例は表示できますが、XMLを参照してアップロードする例は表示できません。誰かが私に例やサンプルコードを教えてくれたら素晴らしいと思います。XMLは次のようになります。

<VisitImportList>
    <Visit>
        <AuditDetails>
            <UpdateUser>ADMIN</UpdateUser>
            <UpdateTimestamp>2010-10-22T16:25:26.593Z</UpdateTimestamp>
        </AuditDetails>
        <VisitId>3</VisitId>
        <MeasurementCollectionId>4</MeasurementCollectionId>
        <WeightConfirmationCode>5</WeightConfirmationCode>
        <PrefilledIndicator>true</PrefilledIndicator>
        <VisitDate>2010-10-22T16:25:26.593Z</VisitDate>     
    </Visit>
    <Visit>
        <AuditDetails>
            <UpdateUser>ADMIN</UpdateUser>
            <UpdateTimestamp>2010-10-22T16:25:26.593Z</UpdateTimestamp>
        </AuditDetails>
        <VisitId>3</VisitId>
        <MeasurementCollectionId>3</MeasurementCollectionId>
        <BloodPressureConfirmationCode>4</BloodPressureConfirmationCode>
        <PrefilledIndicator>true</PrefilledIndicator>
        <VisitInvalidCode>1</VisitInvalidCode>
        <VisitInvalidReasonText>No Dates</VisitInvalidReasonText>
    </Visit>
</VisitImportList>

アップロード用のFileReferenceとXML/XMLListCollectionを使用して、グリッドにデータを表示することができました。ここで問題となるのは、データベースに保存しようとしたときです。新しいスレッドを作成したくなかったので、ここに質問を追加しました。

private function saveVisit(event:MouseEvent): void
            {
var decoder:SimpleXMLDecoder = new SimpleXMLDecoder();
                var data:Object = decoder.decodeXML(xmlDoc);

                var array:Array = ArrayUtil.toArray(data.VisitImportList.Visit);
                tempCollection = new ArrayCollection(array);

これで、arraycollection(tempCollection)にデータがあります。しかし、それはジェネリックオブジェクトを保持しているので、それらをVisitObjectに変換する必要があります。そこで、ArrayCollectionをループして、オブジェクトを特定のカスタムVisitオブジェクトに変換してから、別のコレクションに追加したいと思います(これは正しい方法ではないと確信していますが、代わりの):

     for (var i:int = 0; i < tempCollection.length; ++i) 
                        {               
                            model.visit = new Visit();  
                            model.visit = Visit(tempCollection.getItemAt(i, 0)); // This line gives the error Type Coercion failed: cannot convert Object@1d4e4719 to com.model.Visit.
                            model.visit = tempCollection.getItemAt(i) as Visit; // This line always has Visit as null eventhough the tempCollection has 2 objects

model.pvList.visits.addItemAt(Visit, i);
}

したがって、誰かがArraCollectionをループして、ASオブジェクトをカスタムVisitオブジェクトに変換してから、別のArrayCollectionに追加する方法、またはこれを行うためのより簡単な方法について支援できますか?

ありがとう

ハリッシュ

4

1 に答える 1

1

AIRアプリケーションを使用している場合は、FlexのFileオブジェクトとFileStreamオブジェクトを使用して、コンピューターのリソースに簡単にアクセスできます。

http://livedocs.adobe.com/flex/3/html/help.html?content=Filesystem_16.html

XMLオブジェクトを取得し、そのitemコマンドからXMLListCollectionに変換します。

var xmlProvider:XMLListCollection = new XMLListCollection(xml.Visit);

このプロバイダーをデータグリッドに設定し、スクリプトを記述して、このデータを希望どおりにアップロードおよび保存します。

ただし、代わりにWebアプリケーションを作成している場合。クライアントのフレックス一時ファイルパスにないリソースにアクセスすることはできません。または、「グローバルセキュリティ設定」を使用して、クライアントマシン上のフォルダ/ファイルへのフレックスアクセスを許可する必要があります。この場合、同じAIRAPIが機能するはずです。

ただし、それを望まない場合は、明らかにサーバーにファイルをアップロードし、クライアントでHTTPServiceを使用してそのオブジェクトを読み取り、XMLListCollectionオブジェクトを作成して、DataGridにデータをロードする必要があります。これは役に立ちます

  1. ファイルをアップロードする
  2. サーバー上のXMLファイルのHTTPサービス+DataGridサンプル
于 2010-10-24T23:05:59.950 に答える