Ошибка при получении значений из файла XML в коллекцию массивов в Flex

Я пытаюсь отобразить значения в сетке данных в своем приложении. У меня есть все значения в виде файла 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>    

В моем приложении могут быть случаи, когда мне нужно, чтобы в сетке данных отображалась только одна запись. Как в таких случаях исправить эту ошибку?


person Angeline    schedule 21.10.2009    source источник


Ответы (1)


Насколько я понимаю, вместо этого, вероятно, следует использовать объявление <mx:Model>. Честно говоря, никогда не использовал ни то, ни другое, но из моего чтения здесь кажется, что объявление mx:Model превращает xml в объект (ObjectProxy). Итак, исходя из вашей проблемы, я предполагаю, что если он встречает один «Элемент», он превращает его в пару ключ: значение (например, простой объект) внутри прокси. Когда он встречает несколько «Item», он вместо этого помещает их в массив. То есть структура содержимого, скорее всего, непредсказуема.

Поэтому, если вы используете mx: XML (с format = "e4x") и используете XMLListCollection вместо ArrayCollection, вы можете использовать {reviewList.Item} в качестве источника.

person Glenn    schedule 21.10.2009
comment
Я .. Вы правы. При использовании тегов XML и XMLListCollection у меня не возникает этой проблемы. Даже с одной записью она отображается в сетке данных. Спасибо за твою помощь. - person Angeline; 21.10.2009