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

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

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

Регистрация: Mar 2009
Сообщений: 17
По умолчанию Помогите выбрать данные в comBox

Проблема в том что мне нужно чтоб при выборе записи в comBox, данные выбранной записи отражались ниже в textInput'e. Код кажется простой, но не работает (((

Код:
	<mx:Script>
	<![CDATA[
		[Bindable]
		private var prof:Professor1;
						
		private function init():void{
			professorRO.getEmployees();
			prof = new Professor1();
		}
			
		private function getFullName(item:Object):String{
			return item.surname + " " + item.name;
		}
			
		private function getProfessor(event:Event):void{
			prof = event.target.selectedItem as Professor1;
		}

		private function allProfessorHandler(event:ResultEvent):void{
			profAll.dataProvider = event.result as ArrayCollection;
		}
			
		]]>
	</mx:Script>
	
	<mx:RemoteObject id="professorRO"
		destination="ColdFusion" source="bimm.bimmService"
		fault="faultHandler(event)">
		<mx:method name="getEmployees" result="allProfessorHandler(event)"/>
	</mx:RemoteObject>

	<mx:ComboBox id="profAll" 
		labelFunction = "getFullName"
		change = "getProfessor(event)" />
		
	<mx:TextInput id="id1" 
		text = "{prof.id}"
		change = "{prof.id = id1.text}"/>
Выбираю в comBox запись, а в текстовом поле как было пусто так и осталось.

Может кто подскажет что делать и где смотреть?

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

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Может id в результате не приходит? Вы бы его добавили в комбобокс для проверки?

А change у текстбокса только на юзера срабатывает (я не помню)?
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 17.03.2009, 02:45
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 3  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
На вид просто change вызывается до того, как вы текст присваиваете, и оно его соответственно обнуляет. А зачем вы вообще на него подписались?
__________________
Hell is the possibility of sanity

Старый 17.03.2009, 11:01
Anaza вне форума Посмотреть профиль Отправить личное сообщение для Anaza Найти все сообщения от Anaza
  № 4  
Ответить с цитированием
Anaza

Регистрация: Mar 2009
Сообщений: 17
Цитата:
Сообщение от GBee Посмотреть сообщение
Может id в результате не приходит? Вы бы его добавили в комбобокс для проверки?
добавила, приходит

Цитата:
Сообщение от GBee Посмотреть сообщение
А change у текстбокса только на юзера срабатывает (я не помню)?
эээ, а можно поподробнее, а то я только учусь, но делать надо (((

Цитата:
На вид просто change вызывается до того, как вы текст присваиваете, и оно его соответственно обнуляет. А зачем вы вообще на него подписались?
А как можно без него? Мне надо чтоб при выборе человека в comboBox появлялись данные в textInput и чтоб потом там их можно было редактировать.

Сейчас заметила что при выборе человека и попвтке ввода какой-либо информации в полях снова выскакивает ошибка "TypeError: Error #1009: Cannot access a property or method of a null object reference." Получается что метод взятия отдельного человека не работает и ничего не возвращает.

Что тут можно сделать?

Если прописать следующим образом

Код:
id1.text = event.currentTarget.selectedItem.id;
name1.text = event.currentTarget.selectedItem.name;
surname.text = event.currentTarget.selectedItem.surname;
email.text = event.currentTarget.selectedItem.email;
то данные появляются, но задачи это не решает, так как потом я не могу передать объект (типо Professor) в функцию.


Последний раз редактировалось Anaza; 17.03.2009 в 11:48.
Старый 17.03.2009, 12:45
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 5  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Мне, если чесно, не совсем понятно, чего вы в итоге пытались добиться. Кажется, вы хотели, чтобы какой-то из параметров текущего выбранного объекта типа Professor1 отображался бы в текстовом поле... а вот дальше - не понятно... т.е. вы хотели бы изменять свойство у выбраного объекта, или выбирать другой объект из коллекции основываясь на каком-то из его параметров?
(Мне почему-то кажется, что все-таки второе).
- если нужно отследить ситуацию, когда пользователь ввел данные в текстовое поле - подпишитесь на событие TextEvent.INPUT, и в обработчике уже манипулируйте данными, чего показывать в поле / сменить в модели. Но при этом имейте в виду, что любые изменения, которые вы делаете в в виде происходят с задержкой по отношению к модели (потому что валидация свойств происходит 1 раз в кадр, а модель вы можете за это время поменять несколько раз).
__________________
Hell is the possibility of sanity

Старый 17.03.2009, 13:12
Anaza вне форума Посмотреть профиль Отправить личное сообщение для Anaza Найти все сообщения от Anaza
  № 6  
Ответить с цитированием
Anaza

Регистрация: Mar 2009
Сообщений: 17
У меня есть база данных, где хранятся данные о человеке. В comboBox передается весь массив записей (то есть там у меня список всех людей из бд). Если я выбираю кого-нибудь (в comboBox), то ниже нужно чтоб показалась вся информация о человеке.

Старый 17.03.2009, 14:16
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 7  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Тогда вы не то забиндили... вам нужен выбранный элемент из датапровайдера комбобокса...
Код AS3:
<?xml version="1.0" encoding="utf-8"?>
<!-- ComboBoxExample -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
	<mx:ComboBox id="myCombo" labelField="propN2">
		<mx:dataProvider>
			<mx:ArrayCollection>
				<mx:source>
					<mx:Array>
						<mx:Object>
							<mx:propN1>this is prop #1 of the first item</mx:propN1>
							<mx:propN2>Object #1</mx:propN2>
						</mx:Object>
						<mx:Object>
							<mx:propN1>this is prop #1 of the second item</mx:propN1>
							<mx:propN2>Object #2</mx:propN2>
						</mx:Object>
					</mx:Array>
				</mx:source>
			</mx:ArrayCollection>
		</mx:dataProvider>
	</mx:ComboBox>
 
	<mx:TextInput text="{myCombo.selectedItem.propN1}"/>
</mx:Application>
__________________
Hell is the possibility of sanity

Старый 17.03.2009, 15:44
Anaza вне форума Посмотреть профиль Отправить личное сообщение для Anaza Найти все сообщения от Anaza
  № 8  
Ответить с цитированием
Anaza

Регистрация: Mar 2009
Сообщений: 17
О_о, спасибо за подсказку. Дело в том, что в приложение у меня основная проблема именна в том, что выделить Object...

Заменила
Код:
private function getProfessor(event:Event):void{
        prof = event.target.selectedItem as Professor; 
}
на

Код:
private function getProfessor(event:Event):void{
	var dataObj:Professor = new Professor();
	dataObj.id = event.currentTarget.selectedItem.id;
	dataObj.name = event.currentTarget.selectedItem.name;
	dataObj.surname = event.currentTarget.selectedItem.surname;

        prof = dataObj;
}
и все заработало. Только меня все-таки смущает почему не работал первый вариант и не очень ли кривой код сейчас получается.

Старый 17.03.2009, 16:41
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 9  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Нет... скорее всего event.target.selectedItem не был типа Professor. Поэтому после приведения типов вы получали null вместо объекта. Если вы получаете данные от CF, то вы должны были объявить класс Professor, как [RemoteClass], создать его "двойник" на сервере и т.д. чтобы научить Флекс автоматически конвертировать полученный ответ в Professor а не в ProxyObject.

ЗЫ. Я думаю вы первый человек на этом форуме использующий КолдФюжн
__________________
Hell is the possibility of sanity


Последний раз редактировалось wvxvw; 17.03.2009 в 16:44.
Старый 17.03.2009, 18:10
Anaza вне форума Посмотреть профиль Отправить личное сообщение для Anaza Найти все сообщения от Anaza
  № 10  
Ответить с цитированием
Anaza

Регистрация: Mar 2009
Сообщений: 17
Вроде делала и первое и второе.... нужно будет еще посмотреть )))

А что другие используют? LCDS? И что лучше попробовать перейти на что-то другое или остаться на CF?

PS если не сложно, можно подсказать что нужно прописать в image чтоб изображение было как фон (не закрывало элементы).

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

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

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


 


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


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