![]() |
|
||||||||||
|
|||||
|
Кто-нить может объяснить принцип работы свойства dataProvider? Какие должны быть соблюдены условия для того, что бы он корректно отображал информацию?
Возьмем, например, компонент ButtonBar или LinkBar. Допустим у нас есть ViewStack, состоящий из нескольких Canvas'ов и каждый Canvas имеет свое значение свойства label. Если в свойстве dataProvider ButtonBar'а указать на ViewStack, то все работает нормально. А если, например, создать в AS-файле переменную data_xml:XML с такой же структурой, что и ViewStack, описанный выше, то ничего не работает. [Bindable] private var data_xml:XML = <root> <player name="Scott Carson"/> <player name="David James"/> <player name="Chris Kirkland"/> <player name="Rio Ferdinand"/> <player name="Ashley Cole"/> <player name="Matthew Upson"/> <player name="Wes Brown"/> </root> Как вообще связать dataProvider с XML'ом? |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Ну вообще говоря, вроде все верно.
Весь mxml можно? |
|
|||||
|
Application.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script source="myScript.as"/>
<mx:LinkBar id="topMenu" dataProvider="{data_xml}" labelField="@name"/>
</mx:Application>
[Bindable] private var data_xml:XML = <root> <player name="Scott Carson"/> <player name="David James"/> <player name="Chris Kirkland"/> <player name="Rio Ferdinand"/> <player name="Ashley Cole"/> <player name="Matthew Upson"/> <player name="Wes Brown"/> </root> Error: ERROR: The dataProvider of 'topMenu' must not contain objects of type flash.display.DisplayObject. at mx.controls::NavBar/set dataProvider() at MethodInfo-542() ... ... и т.д. |
|
|||||
|
Регистрация: Mar 2008
Сообщений: 57
|
Попробуй дата провайдер вот так написать..
|
|
|||||
|
пробовал и так, и сяк, ничего не помогает. Я то нашел выход: создал массив объектов со свойствами name и присвоил каждому соответствующее значение из XML'а, а потом в daraProvider'е сослался на этот массив - все заработало. Но это же не выход. Зачем тогда нужен daraProvider? Я с таким же успехом могу создать каждый элемент LinkBar'а по-отдельности
|
|
|||||
|
Регистрация: Sep 2007
Адрес: Путенбург
Сообщений: 147
|
Цитата:
__________________
<!-- КРЭКС ПЭКС ФЛЭКС --> |
|
|||||
|
я, например, делаю так:
А в dataProvider'е LinkBar'а указываю на data_arr. Является ли это наиболее оптимальным подходом?
|
|
|||||
|
Регистрация: Sep 2007
Адрес: Путенбург
Сообщений: 147
|
Я так понял, что ViewStack удобнее использовать в mxml, а в as удобнее Array. А оптимальный ли подход? ИМХО, это уже надо рассматривать в рамках конкретного проэкта.
__________________
<!-- КРЭКС ПЭКС ФЛЭКС --> |
|
|||||
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical"
initialize="init()" >
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.collections.XMLListCollection;
[Bindable]
public var myXML:XML =
<a>
<b label="L1">
<q>Q1</q>
</b>
<b label="L2">
<q>Q2</q>
</b>
</a>;
[Bindable]
public var my:XMLListCollection ;
[Bindable]
public var myArrColl:ArrayCollection =
new ArrayCollection([{label:"L1", q:"Q1"},{label:"L2", q:"Q2"}]);
public function init():void {
my = new XMLListCollection(myXML.children());
}
]]>
</mx:Script>
<!-- ArrayCollection version -->
<mx:ButtonBar dataProvider="{myArrColl}" labelField="label" />
<mx:TabBar dataProvider="{myArrColl}" labelField="label" />
<mx:DataGrid dataProvider="{myArrColl}" >
<mx:columns>
<mx:DataGridColumn dataField="label" />
<mx:DataGridColumn dataField="q" />
</mx:columns>
</mx:DataGrid>
<!-- XML version -->
<!-- if this comment is removed, Flex is unhappy..
<mx:TabBar dataProvider="{my}" labelField="@label" />
..but why? -->
<mx:DataGrid dataProvider="{my}" >
<mx:columns>
<mx:DataGridColumn dataField="@label" />
<mx:DataGridColumn dataField="q" />
</mx:columns>
</mx:DataGrid>
</mx:Application>
но вот баттонбар не дружит с хмл (
__________________
Спирт - враг ваш! Гоните его! | Flash/Flex Blog Последний раз редактировалось WD`; 29.03.2008 в 18:27. |
|
|||||
|
тут ещё есть : http://www.brucephillips.name/blog/i...ider-Attribute
__________________
Спирт - враг ваш! Гоните его! | Flash/Flex Blog |
![]() |
![]() |
Часовой пояс GMT +4, время: 17:02. |
|
|
« Предыдущая тема | Следующая тема » |
|
|