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

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

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

Регистрация: Apr 2007
Сообщений: 45
По умолчанию Заполнение DropDownList через ArrayCollection

Имеется DropDownList, который нужно заполнить данными из MySQL. Работаю через прокладку на php. В итоге в скрипт попадает строка вида "1,Название1;2,Название2;3,Название3", где первая цифра это id (в базе автоинкремент, но это не важно) и второе поле это сам текст, который должен быть в спадающем списке)
Нужно запихнуть эту строку в ArrayCollection так, чтобы потом присвоить свойству DropDownList.dataProvider этот ArrayCollection.
В итоге хочу получить возможность получения id записи, которая выбрана в DropDownList.

Какие есть варианты реализации?
Строку от php могу получить в любом формате (наиболее удобном к обработке)

Старый 07.10.2011, 16:03
trng вне форума Посмотреть профиль Отправить личное сообщение для trng Найти все сообщения от trng
  № 2  
Ответить с цитированием
trng

Регистрация: Jun 2011
Сообщений: 212
либо json, либо amf, либо имеющуюся строку порезать String.split().

json:
  1. на сервере массив должен быть не ассоциативным (иначе сгенерится объект, а не массив).
  2. в клиенте - втянуть массив ну и дальше в ArrayCollection.

amf-прикрутить amf на сервер

Добавлено через 2 минуты
split - если цифры не важны, то убрать их и что-то вроде
var arr:Array = тасамаястрока.split(';');

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

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Цитата:
Строку от php могу получить в любом формате (наиболее удобном к обработке)
JSON?

Название элемента может содеражть запятые или точку с запятой? Если нет, то можно так:

Код AS3:
var resStr:String = "1,Название1;2,Название2;3,Название3";
var arr:Array = resStr.split(";");
var len:int = arr.length;
var ac:ArrayCollection = new ArrayCollection();
for(var i:int = 0; i<len; i++)
{
  var o:Object = {};
  var props:Array = arr[i].split(",");
  o.id = props[0];
  o.label = props[1];
  ac.addItem(o);
}
Но лучше JSON. Тема не в той ветке.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

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

Регистрация: Jun 2011
Сообщений: 212
Если цифры важны, то сперва split(';'), а потом в цикле для каждого элемента массива split(',')

Добавлено через 2 минуты
в json есть экранирование, так что название элемента может содеражть запятые или точку с запятой

Добавлено через 5 минут
Но лучше json. Сериализовать двумерный массив, а в клиенте втянуть циклом как GBee предложил (уже без split(), конечно).

Старый 07.10.2011, 16:58
kostasoft вне форума Посмотреть профиль Отправить личное сообщение для kostasoft Найти все сообщения от kostasoft
  № 5  
Ответить с цитированием
kostasoft

Регистрация: Apr 2007
Сообщений: 45
Цитата:
Сообщение от trng Посмотреть сообщение
Если цифры важны, то сперва split(';'), а потом в цикле для каждого элемента массива split(',')

Добавлено через 2 минуты
в json есть экранирование, так что название элемента может содеражть запятые или точку с запятой

Добавлено через 5 минут
Но лучше json. Сериализовать двумерный массив, а в клиенте втянуть циклом как GBee предложил (уже без split(), конечно).
Спасибо за ответы.

Нет, не JSON, Свой php-скрипт.
Цифры важны, ибо я хочу, чтобы при выборе нужного названия из списка получить его ID. Цифры в списке светиться не должны.

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

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Цитата:
Нет, не JSON, Свой php-скрипт.
Да, можно попробовать JSON, "Свой php-скрипт" все-таки.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

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

Регистрация: Jun 2011
Сообщений: 212
Можно и без json в том плане, что любой json_decode будет делать некий подобный парсинг строки.
Поэтому если структура данных усложняться не будет, то обычный split() вполне уместен.

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

Регистрация: Apr 2007
Сообщений: 45
Да, сплит подходит, я так и сделал. Только мне нужно чтобы в DropDownList-е хранились не только названия, но и id. Если сделать сплит по ";" , то список получается некрасивый:
1,Название1
2,Название2
3,Название3
Но при выборе нужного значения легко вытащить его id и дальше с ним работать. А никак нельзя в DropDownList-е скрыть ненужные данные (сделать невидимыми).
Или, как вариант, создать двумерный Array (или ArrayCollection, если возможно), который будет существовать параллельно DropDownList-у. И получать id уже из него, зная itemIndexSelected?

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

Регистрация: Jun 2011
Сообщений: 212
id и itemIndexSelected - разные вещи. Ничего параллельно создавать не надо.
Схема GBee - оптимальная.
По itemIndexSelected получаете нужный элемент и берете его свойство id.

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

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

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


 


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


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