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

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

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

Регистрация: Jul 2004
Сообщений: 430
Question Подготовка внешних XML данных и загрузка их в компонент

Народ, хочу спросить кто как грузить внешние XML данные в компоненты - например (ComboBox и DataGrid).

Есть такая XML:

Код:
<?xml version="1.0" encoding="utf-8"?>
<spisok>
<razdel>раздел 1</razdel>
<razdel>раздел 2</razdel>
<razdel>раздел 3</razdel>
</spisok>
Как правильно обработать эти данные и загрузить их в компонент? Я делаю так:

1.Инициализирую массивы и загрузку:

Код:
[Bindable] 
public var externalXML:XML=new XML();		 
public var cards:Array =new Array();

private function initApp():void { 
	var loader:URLLoader = new URLLoader();
	var request:URLRequest = new URLRequest("xmlFile.xml");
	loader.load(request);
	loader.addEventListener(Event.COMPLETE, onComplete);		
	}

private function onComplete(event:Event):void {
    var loader:URLLoader = URLLoader(event.target);
    externalXML = XML(loader.data);
   
	for (var i:int=0; i<externalXML.children().length(); i++){
		cards[i]={label:externalXML.children()[i].toString()};
	}
}
2.Через dataProvider загоняю массив в компонент:

Код:
<mx:ComboBox x="93" y="34" id="razdel"  dataProvider="{cards}" width="191"></mx:ComboBox>
Вроде все отображается и загружается (для комбобоха), но как-то кривовато(то что не нравиться я выделил красным).

Кроме того, массив cards[i] -вообще не воспринимается через dataProvider в DataGrid.

Прошу помочь правильно описать данный массив для компонентов ComboBox и DataGrid.

Большое спасибо!

Старый 06.11.2007, 23:47
fishbounce вне форума Посмотреть профиль Отправить личное сообщение для fishbounce Посетить домашнюю страницу fishbounce Найти все сообщения от fishbounce
  № 2  
Ответить с цитированием
fishbounce

Регистрация: Dec 2003
Адрес: Москва
Сообщений: 176
а почему просто не написать так:
Код:
<mx:ComboBox x="93" y="34" id="razdel"  dataProvider="{externalXML..razdel}" width="191" />
?
тока в начале надо так написать:
Код:
[Bindable]
public var externalXML : XML = null;

Старый 07.11.2007, 16:22
librio вне форума Посмотреть профиль Отправить личное сообщение для librio Найти все сообщения от librio
  № 3  
Ответить с цитированием
librio

Регистрация: Nov 2006
Сообщений: 134
1. Лично мне удобнее всего работать с ArrayCollection, потому как там кроме всего прочего, есть удобные средства сортировки, фильтрации и проч.
2. Лучше все-таки избегать глобальных переменных как у тебя сейчас (рельно можно обойтись без нее в приведенном примере).
3. Просто совет: если тебе придется загружать много одинаковых по структуре XML - сразу напиши обертку над HTTPService (под конкретный протокол) - это сильно облегчит задачу в будущем.

На счет "неуклюжести" не беспокойся. Чего переживать из-за одной такой строчки. Многие пишут сотни строк неуклюжего кода и не краснеют. Главное - результат
__________________
http://creationcomplete.com

Старый 07.11.2007, 18:08
zlatko вне форума Посмотреть профиль Отправить личное сообщение для zlatko Найти все сообщения от zlatko
  № 4  
Ответить с цитированием
zlatko

Регистрация: Oct 2007
Адрес: Украина, Львов
Сообщений: 111
Отправить сообщение для zlatko с помощью ICQ
Цитата:
Сообщение от librio
3. Просто совет: если тебе придется загружать много одинаковых по структуре XML - сразу напиши обертку над HTTPService (под конкретный протокол) - это сильно облегчит задачу в будущем.
Извините что встряю, но можна чуточку поподробнее ?

Старый 07.11.2007, 18:34
librio вне форума Посмотреть профиль Отправить личное сообщение для librio Найти все сообщения от librio
  № 5  
Ответить с цитированием
librio

Регистрация: Nov 2006
Сообщений: 134
Цитата:
Сообщение от zlatko
Извините что встряю, но можна чуточку поподробнее ?
Что именно поподробнее? Как написать обертку?
В двух словах:
1. Определяемся с протоколом (причем в обе стороны)
2. Пишем ядро класса, отвечающего за посылку запроса/получение ответа
3. Пишем функционал удобного добавления параметров в запрос (например методом push(param, value))
4. Пишем функционал обработки результата. То есть чтобы нам сразу приходило кастомное событие с сформированным как нам нужно ArrayCollection и дополнительной инфой из ответа.

= Получаем хорошо расширяемую обертку. Поменяли протокол? - меняем только этот класс и перекомпиливаем все модули, которые его используют. И все. Думаю понятны преимущества такого подхода.
__________________
http://creationcomplete.com

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

Регистрация: Jul 2004
Сообщений: 430
Цитата:
Сообщение от librio
1. Лично мне удобнее всего работать с ArrayCollection, потому как там кроме всего прочего, есть удобные средства сортировки, фильтрации и проч.
2. Лучше все-таки избегать глобальных переменных как у тебя сейчас (рельно можно обойтись без нее в приведенном примере).
3. Просто совет: если тебе придется загружать много одинаковых по структуре XML - сразу напиши обертку над HTTPService (под конкретный протокол) - это сильно облегчит задачу в будущем.

На счет "неуклюжести" не беспокойся. Чего переживать из-за одной такой строчки. Многие пишут сотни строк неуклюжего кода и не краснеют. Главное - результат
дело не совсем в неуклюжести - все работает, но для компонента Комбобокс не отображает элемент "по умолчанию", подскажите как это сделать.

Кроме того, если не сильно сложно, представь пожалуйста вариант через АррайКоллекшенс.

Большое спасибо

Старый 08.11.2007, 17:36
librio вне форума Посмотреть профиль Отправить личное сообщение для librio Найти все сообщения от librio
  № 7  
Ответить с цитированием
librio

Регистрация: Nov 2006
Сообщений: 134
Цитата:
Сообщение от quazare
дело не совсем в неуклюжести - все работает, но для компонента Комбобокс не отображает элемент "по умолчанию", подскажите как это сделать.
Кроме того, если не сильно сложно, представь пожалуйста вариант через АррайКоллекшенс.
А что ты видишь по умолчанию в combo box?
На счет ArrayCollection - примеры ищи в help, там они есть.
__________________
http://creationcomplete.com

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

Регистрация: Jul 2004
Сообщений: 430
Цитата:
Сообщение от librio
А что ты видишь по умолчанию в combo box?
На счет ArrayCollection - примеры ищи в help, там они есть.
дак в том-то и дело. что в комбо боксе - по умолчанию ничего не стоит - а должен - первый элемент списка... как сие исправить...

Старый 08.11.2007, 12:30
zlatko вне форума Посмотреть профиль Отправить личное сообщение для zlatko Найти все сообщения от zlatko
  № 9  
Ответить с цитированием
zlatko

Регистрация: Oct 2007
Адрес: Украина, Львов
Сообщений: 111
Отправить сообщение для zlatko с помощью ICQ
2 librio
Понял. Спасибо !

Старый 08.11.2007, 16:09
quazare вне форума Посмотреть профиль Отправить личное сообщение для quazare Найти все сообщения от quazare
  № 10  
Ответить с цитированием
quazare
 
Аватар для quazare

Регистрация: Jul 2004
Сообщений: 430
Народ, а по теме кто-нибудь мне ответит?

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

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

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


 


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


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