|
|
|||||
dataProvider, принцип работы
Кто-нить может объяснить принцип работы свойства 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,784
|
Ну вообще говоря, вроде все верно.
Весь 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, время: 10:50. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|