2011-03-17 55 views
1

我有這樣一個XML結構DROPDOWNLIST:軟硬度:添加項目使用的ItemRenderer

<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> 

我使用自定義的DropDownList使用ItemRendererFunction來填充它:

<s:Label text="{data.attribute('Name')}" top="3" left="10" right="10" bottom="3" color="0xFF00FF" /> 

它是否有一個屬性'名稱',否則是一個常規標籤。

渲染功能是:

public function renderNode(item:*):IFactory 
{ 
    if (item.attribute('Name') != null) 
     return new ClassFactory(SpecialItemRenderer); 
    else 
     return new ClassFactory(RegularItemRenderer); 
} 

然而,我指定在數據提供程序的形式的XML,作爲dProv.child(「組別」),因此,我只得到在renderNode() 2個<Data>節點。但我也想同時填充<Item>節點。

我已經使用使用新itemRendererFunction newFunc(item:*):void循環嘗試:

var nodes:XMLNode = item.children(); 
while(nodes) 
{ 
    this.renderNode(nodes); 
    nodes = nodes.nextSibling; 
} 

,但有一個運行時錯誤的newFunc()不會返回任何東西。

然後,我通過創建一個mx:Label項目動態&通過this.addElement(newLabel)將它添加到this修改了原來的renderNode()但這不會放在下拉列表的標籤,但在控制上。

所以我想知道是否有任何方法可以在解析原始XML數據時動態添加這些Items/label?

問候,
Nisheeth Barthwal

+0

什麼是您的項目渲染器擴展? – 2011-03-17 18:26:10

+0

自定義DropDownList。 – nbaztec 2011-03-17 18:33:17

+0

編輯:我正在使用itemRendererFunction放置基於數據的標籤。標籤的ItemRenderer在聲明中定義。 – nbaztec 2011-03-17 18:49:06

回答