Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > Flex

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 10.03.2008, 13:08
Peregrin вне форума Посмотреть профиль Отправить личное сообщение для Peregrin Найти все сообщения от Peregrin
  № 1  
Ответить с цитированием
Peregrin
 
Аватар для Peregrin

Регистрация: Nov 2006
Адрес: Hamburg
Сообщений: 195
Отправить сообщение для Peregrin с помощью ICQ
По умолчанию 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>
в свойстве labelFeild ButtonBar'а прописываю @name.
Как вообще связать dataProvider с XML'ом?

Старый 10.03.2008, 13:53
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Ну вообще говоря, вроде все верно.
Весь mxml можно?

Старый 10.03.2008, 14:57
Peregrin вне форума Посмотреть профиль Отправить личное сообщение для Peregrin Найти все сообщения от Peregrin
  № 3  
Ответить с цитированием
Peregrin
 
Аватар для Peregrin

Регистрация: Nov 2006
Адрес: Hamburg
Сообщений: 195
Отправить сообщение для Peregrin с помощью ICQ
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>
myScript.as
Код:
[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() ... ...
и т.д.

Старый 11.03.2008, 15:22
max_oil вне форума Посмотреть профиль Отправить личное сообщение для max_oil Найти все сообщения от max_oil
  № 4  
Ответить с цитированием
max_oil

Регистрация: Mar 2008
Сообщений: 57
Попробуй дата провайдер вот так написать..

Код:
<mx:LinkBar id="topMenu" dataProvider="{data_xml.player}" labelField="@name"/>

Старый 11.03.2008, 19:57
Peregrin вне форума Посмотреть профиль Отправить личное сообщение для Peregrin Найти все сообщения от Peregrin
  № 5  
Ответить с цитированием
Peregrin
 
Аватар для Peregrin

Регистрация: Nov 2006
Адрес: Hamburg
Сообщений: 195
Отправить сообщение для Peregrin с помощью ICQ
пробовал и так, и сяк, ничего не помогает. Я то нашел выход: создал массив объектов со свойствами name и присвоил каждому соответствующее значение из XML'а, а потом в daraProvider'е сослался на этот массив - все заработало. Но это же не выход. Зачем тогда нужен daraProvider? Я с таким же успехом могу создать каждый элемент LinkBar'а по-отдельности

Старый 11.03.2008, 20:03
FlexOkeks вне форума Посмотреть профиль Отправить личное сообщение для FlexOkeks Найти все сообщения от FlexOkeks
  № 6  
Ответить с цитированием
FlexOkeks
 
Аватар для FlexOkeks

Регистрация: Sep 2007
Адрес: Путенбург
Сообщений: 147
Цитата:
Сообщение от Peregrin.ru
Зачем тогда нужен daraProvider?
daraProvider это свойство которое хранит модель данных, модель того, что визуально отображает компонент, тип этих данных зависит от компонента. Для LinkBar в хелпе сказано: The type of data can either be a ViewStack container or an Array. А про то, можно ли ему скормить XML, не говориться.
__________________
<!-- КРЭКС ПЭКС ФЛЭКС -->

Старый 12.03.2008, 12:55
Peregrin вне форума Посмотреть профиль Отправить личное сообщение для Peregrin Найти все сообщения от Peregrin
  № 7  
Ответить с цитированием
Peregrin
 
Аватар для Peregrin

Регистрация: Nov 2006
Адрес: Hamburg
Сообщений: 195
Отправить сообщение для Peregrin с помощью ICQ
я, например, делаю так:
Код:
var arr:Array = [];
for each (var i:XML in data_xml.player.@name)
{
	arr.push(String(i));
}
data_arr = arr;
А в dataProviderLinkBar'а указываю на data_arr. Является ли это наиболее оптимальным подходом?

Старый 12.03.2008, 14:00
FlexOkeks вне форума Посмотреть профиль Отправить личное сообщение для FlexOkeks Найти все сообщения от FlexOkeks
  № 8  
Ответить с цитированием
FlexOkeks
 
Аватар для FlexOkeks

Регистрация: Sep 2007
Адрес: Путенбург
Сообщений: 147
Я так понял, что ViewStack удобнее использовать в mxml, а в as удобнее Array. А оптимальный ли подход? ИМХО, это уже надо рассматривать в рамках конкретного проэкта.
__________________
<!-- КРЭКС ПЭКС ФЛЭКС -->

Старый 29.03.2008, 18:21
WD` вне форума Посмотреть профиль Отправить личное сообщение для WD` Найти все сообщения от WD`
  № 9  
Ответить с цитированием
WD`
 
Аватар для WD`

Регистрация: Sep 2001
Адрес: Кишинёв
Сообщений: 1,516
Отправить сообщение для WD` с помощью ICQ
Код:
<?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>
источник: http://www.mail-archive.com/flexcode.../msg75527.html

но вот баттонбар не дружит с хмл (
__________________
Спирт - враг ваш! Гоните его! | Flash/Flex Blog


Последний раз редактировалось WD`; 29.03.2008 в 18:27.
Старый 29.03.2008, 18:38
WD` вне форума Посмотреть профиль Отправить личное сообщение для WD` Найти все сообщения от WD`
  № 10  
Ответить с цитированием
WD`
 
Аватар для WD`

Регистрация: Sep 2001
Адрес: Кишинёв
Сообщений: 1,516
Отправить сообщение для WD` с помощью ICQ
тут ещё есть : http://www.brucephillips.name/blog/i...ider-Attribute
__________________
Спирт - враг ваш! Гоните его! | Flash/Flex Blog

Создать новую тему Ответ Часовой пояс GMT +4, время: 23:55.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 23:55.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.