0

アプリケーションのデータグリッドに値を表示しようとしています。すべての値をxmlファイルとして持っています。データ グリッドの 1 行だけを埋めるために、XML ファイルには 1 セットのレコードしかありませんでした。コードを使用して XML ファイルからアプリケーション ファイルの配列コレクションに値を格納しようとしている間、つまり、

<mx:Model id="reviewList" source="assets/reviewList.xml"/>
<mx:ArrayCollection id="reviewlist" source="{reviewList.Item}"/> 

エラーが表示されます

Error No# 1034: Type coercion failed cannot convert mx.utils::ObjectProxy to Array.

しかし、XML ファイルに 2 つのレコード セットがあれば、問題なく動作します。セットが 1 つしかない場合、上記のエラーが発生しますか? この場合の問題は何ですか?

ここに私のxmlファイルがあります:

<ReviewList>
<Item>
    <ReviewId>1123</ReviewId>
    <TaskType>User Requirement Specification</TaskType>
    <RequestId>1223</RequestId>
    <ItemCodeVersion>URS - 1</ItemCodeVersion>
    <ReviewStartDate>29-Sep-2009</ReviewStartDate>
    <Status>Review In Progress</Status>
    <Reviewer>MR.RISHU GHOSE</Reviewer>
    <OpenDefect>0</OpenDefect>
    <CasualAnalysisPending>0</CasualAnalysisPending>
    <CloseDefects>0</CloseDefects>
    <VerifiedDefects>0</VerifiedDefects>
</Item>

</ReviewList>

そして、これは詳細を表示したいデータグリッドです。

<mx:DataGrid id="reviewDG" dataProvider="{reviewlist}" variableRowHeight="true" width="100%" height="200" 
                     horizontalScrollPolicy="off">

<mx:columns>
    <mx:DataGridColumn headerText="Review Id" dataField="ReviewId" textAlign="center" />

    <mx:DataGridColumn headerText="Task Type" dataField="TaskType" textAlign="center"/> 

    <mx:DataGridColumn headerText="Request Id" dataField="RequestId" textAlign="center"/> 

    <mx:DataGridColumn headerText="Item Code-Ver" dataField="ItemCodeVersion" textAlign="center" headerWordWrap="true"/> 

    <mx:DataGridColumn headerText="Review Start Date" dataField="ReviewStartDate" textAlign="center" headerWordWrap="true"/>

    <mx:DataGridColumn headerText="Status" dataField="Status" textAlign="center"/>

    <mx:DataGridColumn headerText="Reviewer" dataField="Reviewer" textAlign="center"/>

    <mx:DataGridColumn headerText="Open Defect" dataField="OpenDefect" textAlign="center" headerWordWrap="true"/> 

    <mx:DataGridColumn headerText="Casual Analysis Pending" dataField="CasualAnalysisPending" textAlign="center" headerWordWrap="true"/>

    <mx:DataGridColumn headerText="Close Defects" dataField="CloseDefects" textAlign="center" headerWordWrap="true"/>

    <mx:DataGridColumn headerText="Verified Defects" dataField="VerifiedDefects" textAlign="center" headerWordWrap="true"/>

    <mx:DataGridColumn headerText="Review Details" dataField="ReviewDetails" width="65" headerWordWrap="true"> 
     <mx:itemRenderer> 
       <mx:Component> 
        <mx:Label text="View" click="outerDocument.onViewClick()"/> 
       </mx:Component> 
     </mx:itemRenderer> 
    </mx:DataGridColumn> 


</mx:columns>
  </mx:DataGrid>    

私のアプリケーションでは、データグリッドに表示するレコードが 1 つだけ必要な場合があります。このような場合、このエラーを解決するにはどうすればよいですか?

4

1 に答える 1

3

私の理解では、<mx:Model>宣言はおそらく代わりになるはずです。正直なところ、どちらも使用したことはありませんが、ここで読んだところ、mx:Model宣言によってxmlがオブジェクト(ObjectProxy)に変換されるようです。あなたの問題に基づいて、単一の「アイテム」に遭遇した場合、それをプロキシ内のキーと値のペア(単純なオブジェクトなど)に変換すると推測しています。複数の「アイテム」に遭遇すると、代わりにそれらを配列に入れます。つまり、内容の構造が予測できない可能性があります。

mx:XML (format="e4x") を使用し、ArrayCollection の代わりに XMLListCollection を使用する{reviewList.Item}と、ソースとして使用できます。

于 2009-10-21T08:09:26.347 に答える