PDA

Просмотр полной версии : Построение <mx:Tree> из XML


MaxD
11.01.2007, 16:32
Вопрос: Как построить <mx:Tree> используя данные из внешнего XML-документа?
То есть, каким-то образом построить это дерево, используя что-то типа HTTPServise, dataProvider,
и при этом не строить вручную <mx:XMLList>.

etc
11.01.2007, 16:37
Как ни странно, но в хелпе к флексу есть пример.

MaxD
11.01.2007, 16:58
В хелпе к флексу во всех примерах данные для <mx:Tree> задаются из <mx:XMLList>. Если нет, укажите раздел хелпа.

etc
11.01.2007, 17:09
Есть примеры HTTPService+DataGrid, а уж HTTPService+Tree сделать вообще не может быть проблемой.

MaxD
11.01.2007, 17:49
ок, конкретизирую (см. комментарии в коде, 3шт).

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="feedRequest.send();">
<mx:Script>
<![CDATA[
[Bindable]
// Создаем для первого дерева XML вручную:
public var myData:XML=
<data>
<clas name="Розділ 1. Повторення курсу алгебри 10-го класу" subdir="Rozdil_1">
<part name="Контрольна робота" subdir="Lesson_1_2">
</part>
</clas>
<clas name="Розділ 2. Границя і неперервність функції" subdir="Rozdil_2">
<part name="Тема 1. Границя і неперервність функції" subdir="Tema_1">
<topic name="Урок 1. Модуль дійсного числа та його властивості" subdir="Lesson_1"/>
<topic name="Урок 2, 3. Границя функції неперервного аргументу" subdir="Lesson_2_3"/>
<topic name="Урок 4. Неперервні функції" subdir="Lesson_4"/>
</part>
</clas>
</data>;
]]>
</mx:Script>
<mx:HTTPService
id="feedRequest"
url="data/data.xml"
useProxy="false" />

<!-- Это панель с деревом 1, которое строится из myData:XML, описанной выше, путем выбора атрибутов "name" -->
<mx:Panel x="39" y="10" width="304" height="363" layout="absolute" title="Tree_proba">
<mx:Tree x="10" y="10" height="303" width="264" id="myTree" dataProvider="{myData}"
showRoot="false" labelField="@name"></mx:Tree>
</mx:Panel>
<!-- Здесь я пытаюсь построить аналогичное дерево из внешней data.xml (по содержанию она такая же, как и myData),
но в результате получаю [object:Object] (см. скриншот). Вероятно, не срабатывает labelField="@name"-->
<mx:Panel x="372" y="10" width="272" height="363" layout="absolute" title="Tree_proba2">
<mx:Tree x="10" y="10" height="303" width="232" id="myTree2" dataProvider="{feedRequest.lastResult.data}"
showRoot="false" labelField="@name"></mx:Tree>
</mx:Panel>
</mx:Application>

etc
11.01.2007, 18:09
У HTTPService нужно указать resultFormat или e4x или xml. И .data в dataProvider не надо, т.е. просто {feedRequest.lastResult}.

MaxD
11.01.2007, 18:53
Спасибо.

Nirth
11.01.2007, 19:47
Пользователь MaxD получает предупреждение.