0

我正在尝试在我的应用程序的数据网格中显示值。我将所有值作为 xml 文件。我在 XML 文件中只有一组记录,仅填充数据网格的一行。在尝试使用代码将 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 文件中有两个记录集,它就可以正常工作。如果只有一套,我得到上述错误?在这种情况下有什么问题?

这是我的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>    

在我的应用程序中可能存在我只需要在数据网格中显示一条记录的情况。在这种情况下,我该如何解决这个错误?

4

1 回答 1

3

我的理解是该<mx:Model>声明可能应该改为。老实说,两者都没有使用过,但从我在这里的阅读来看,该声明似乎mx:Model将 xml 转换为一个对象(ObjectProxy)。因此,根据您的问题,我猜如果它遇到单个“项目”,它会将其转换为代理中的键:值对(例如,简单对象)。当它遇到多个“项目”时,它会将它们放入一个数组中。也就是说,内容的结构可能是不可预测的。

因此,如果您使用 mx:XML(格式 =“e4x”),并使用 XMLListCollection 而不是 ArrayCollection,则可以{reviewList.Item}用作源。

于 2009-10-21T08:09:26.347 回答