У меня есть структура XML, такая как:
<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 в форме dataProvider как dProv.child ('Category1'), поэтому я получаю только 2 <Data>
узлы в renderNode()
.Но я также хочу заполнить узлы <Item>
одновременно.
Я пытался использовать цикл с использованием новой функции itemRendererFunction newFunc(item:*):void
:
var nodes:XMLNode = item.children();
while(nodes)
{
this.renderNode(nodes);
nodes = nodes.nextSibling;
}
, но получил ошибку времени выполнения, поскольку newFunc()
ничего не будет возвращать.
Затем я внес изменения в исходный renderNode()
, динамически создав элемент mx:Label
и добавив его к this
через this.addElement(newLabel)
, но это не поместило бы Метку в раскрывающийся список, нона вершине контроля.
Итак, я хотел бы знать, есть ли способ динамического добавления этих элементов / метки при анализе исходных данных XML?
С уважением,
Нишет Бартвал