![]() |
|
||||||||||
|
|||||
|
Регистрация: Mar 2009
Сообщений: 17
|
Проблема в том что мне нужно чтоб при выборе записи в 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}"/>
Может кто подскажет что делать и где смотреть? |
|
|||||
|
Может id в результате не приходит? Вы бы его добавили в комбобокс для проверки?
А change у текстбокса только на юзера срабатывает (я не помню)?
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку. |
|
|||||
|
Modus ponens
|
На вид просто change вызывается до того, как вы текст присваиваете, и оно его соответственно обнуляет. А зачем вы вообще на него подписались?
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Mar 2009
Сообщений: 17
|
Цитата:
эээ, а можно поподробнее, а то я только учусь, но делать надо ((( Цитата:
Сейчас заметила что при выборе человека и попвтке ввода какой-либо информации в полях снова выскакивает ошибка "TypeError: Error #1009: Cannot access a property or method of a null object reference." Получается что метод взятия отдельного человека не работает и ничего не возвращает. Что тут можно сделать? ![]() ![]() Если прописать следующим образом то данные появляются, но задачи это не решает, так как потом я не могу передать объект (типо Professor) в функцию. Последний раз редактировалось Anaza; 17.03.2009 в 11:48. |
|
|||||
|
Modus ponens
|
Мне, если чесно, не совсем понятно, чего вы в итоге пытались добиться. Кажется, вы хотели, чтобы какой-то из параметров текущего выбранного объекта типа Professor1 отображался бы в текстовом поле... а вот дальше - не понятно... т.е. вы хотели бы изменять свойство у выбраного объекта, или выбирать другой объект из коллекции основываясь на каком-то из его параметров?
(Мне почему-то кажется, что все-таки второе). - если нужно отследить ситуацию, когда пользователь ввел данные в текстовое поле - подпишитесь на событие TextEvent.INPUT, и в обработчике уже манипулируйте данными, чего показывать в поле / сменить в модели. Но при этом имейте в виду, что любые изменения, которые вы делаете в в виде происходят с задержкой по отношению к модели (потому что валидация свойств происходит 1 раз в кадр, а модель вы можете за это время поменять несколько раз).
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Mar 2009
Сообщений: 17
|
У меня есть база данных, где хранятся данные о человеке. В comboBox передается весь массив записей (то есть там у меня список всех людей из бд). Если я выбираю кого-нибудь (в comboBox), то ниже нужно чтоб показалась вся информация о человеке.
|
|
|||||
|
Modus ponens
|
Тогда вы не то забиндили... вам нужен выбранный элемент из датапровайдера комбобокса...
<?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 |
|
|||||
|
Регистрация: Mar 2009
Сообщений: 17
|
О_о, спасибо за подсказку. Дело в том, что в приложение у меня основная проблема именна в том, что выделить Object...
Заменила private function getProfessor(event:Event):void{
prof = event.target.selectedItem as Professor;
}
и все заработало. Только меня все-таки смущает почему не работал первый вариант и не очень ли кривой код сейчас получается. |
|
|||||
|
Modus ponens
|
Нет... скорее всего event.target.selectedItem не был типа Professor. Поэтому после приведения типов вы получали null вместо объекта. Если вы получаете данные от CF, то вы должны были объявить класс Professor, как [RemoteClass], создать его "двойник" на сервере и т.д. чтобы научить Флекс автоматически конвертировать полученный ответ в Professor а не в ProxyObject.
ЗЫ. Я думаю вы первый человек на этом форуме использующий КолдФюжн ![]()
__________________
Hell is the possibility of sanity Последний раз редактировалось wvxvw; 17.03.2009 в 16:44. |
|
|||||
|
Регистрация: Mar 2009
Сообщений: 17
|
Вроде делала и первое и второе.... нужно будет еще посмотреть )))
А что другие используют? LCDS? И что лучше попробовать перейти на что-то другое или остаться на CF? PS если не сложно, можно подсказать что нужно прописать в image чтоб изображение было как фон (не закрывало элементы). |
![]() |
![]() |
Часовой пояс GMT +4, время: 22:37. |
|
|
« Предыдущая тема | Следующая тема » |
|
|