2011-03-17 41 views
0

我使用[lastResult]屬性訪問來自PHP腳本的XML響應。
問題是follwing:
XML結構:Flex + XML + dataProvider:指定dataProvider到ComboBox和DataGrid的問題

<Main> 
    <Category1> 
    <Data Name="Data1"> 
     <Item> 
     <Name>foo</Name> 
     <Info>bar</Info> 
     </Item> 
     <Item> 
     <Name>baz</Name> 
     <Info>FOO</Info> 
     </Item> 
    </Data> 
    <Data Name="Data2"> 
    </Data> 
    </Category1> 
    <Category2> 
    </Category2> 
</Main> 

現在我指定DataGrid的數據提供程序爲

'lastResult.Category1.Data.(@Name == "Data1").Item' 

這工作足夠細&我的數據正確輸出。我唯一需要的是如何訪問<Data>標籤的@Name屬性。
我可以輸出名稱&項目信息通過指定:

'Name' 
'Info' 

但我無能如何指定當我選擇Data.Item作爲數據提供程序父<Data>標籤的@Name屬性。我可以做什麼,我需要上升到父節點1水平,但我找不到任何參考,以便如何使用[lastResult] dataProvider如何上升一級(所有正在使用XMLListCollection :: parent())
任何幫助表示讚賞。

問候,
Nisheeth Barthwal

回答

0

lastResult.Category1.Data.(@Name == "Data1").Item給你的XMLList在Data1找到的項目。每個項目的類型爲XML,並且可以調用parent()功能得到父節點:

//get first item 
var item:XML = lastResult.Category1.Data.(@Name == "Data1").Item[0]; 
trace("[email protected]: " + item.parent()[email protected]); 

編輯:,使其內部數據網格的工作,你需要使用列的labelFunction財產。將其設置爲:

function formatItem(item:Object, column:DataGridColumn):String { 
    return (item as XML).parent()[email protected]; 
} 
+0

但我想在DataGrid的dataField屬性中使用它。當dataProvider =「{lastResult.Category1.Data。(@ Name ==」Data1「)時,dataField =」parent()。@ Name「不起作用,dataField =」(parent()。@ Name)「也不起作用。 Item}} – nbaztec 2011-03-17 11:17:35

+0

編輯:這可以在{..}(lastResult.Category1.Data。(@ Name ==「Data1」)。Item.parent()} 內的dataProvider字段中使用,但不在「」中的dataField中) (「父母名字」) – nbaztec 2011-03-17 11:33:56

相關問題