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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 07.11.2008, 19:52
neru80 вне форума Посмотреть профиль Отправить личное сообщение для neru80 Найти все сообщения от neru80
  № 3  
Ответить с цитированием
neru80

Регистрация: Nov 2008
Сообщений: 3
Цитата:
Сообщение от sabbats Посмотреть сообщение
Тебе могут помочь те, кто решал данную проблему.Посмотри
не, это я уже читал - не мой случай. помогло вот это тынц

исправленный код компонента (если, конечно, кому интересно :-) )

Код:
package datech.controls
{
	import mx.collections.ArrayCollection;
	import mx.controls.ComboBox;
	import mx.controls.dataGridClasses.DataGridListData;
	import mx.events.FlexEvent;
	import mx.events.ListEvent;

	public class DropInGridComboBox extends ComboBox{
		public function DropInGridComboBox(){
			super();
			this.addEventListener(ListEvent.CHANGE, onSelectionChange);
		}
		
		/////// PRIVATE FIELDS ///////
		[Bindable]
		private var _values:ArrayCollection;
		private var _showfield:String;
		private var _keyfield:String;
		//////////////////////////////
		
		
		
		/////// PROPERTIES FOR ClassFactory CLASS ///////
		public function set values(value:ArrayCollection):void{
			_values = value;
			invalidateNestedComboBox();
		}
		public function set showField(value:String):void{
			super.labelField = value;
			_showfield = value;
			invalidateNestedComboBox();
		}
		public function set keyField(value:String):void{
			_keyfield = value;
			invalidateDisplayList();
		}
		/////////////////////////////////////////////////
		
		
		
		/////// ComboBox UTILITIES ///////
		protected function invalidateNestedComboBox():void{
			if(_values == null || _showfield == null || _showfield == "") return;

			this.dataProvider = _values;
			this.labelField = _showfield;
			
			invalidateDisplayList();
		}
		protected function setCurrentItem(cur:Object):void{
			for(var i:int = 0; i<_values.length; i++)
				if(_values[i][_keyfield] == cur[_keyfield])
				{
					super.data = cur;
					this.selectedIndex = i;
					break;
				}
		}
		//////////////////////////////////
		
		
		
		/////// CombobBox Data stuff overriding ///////
		override public function set data(value:Object):void{
			setCurrentItem(value);
			invalidateProperties();
			dispatchEvent(new FlexEvent(FlexEvent.DATA_CHANGE));
		}
		private function onSelectionChange(evt:ListEvent):void{
			if(this.listData is DataGridListData)
				{
					var ownerList:DataGridListData = DataGridListData(this.listData);
					this.data[ownerList.dataField] = this.selectedItem[this._keyfield];
				}	
		}
		//////////////////////////////////////////////
		
		
		/////// OTHER UTILITIES ///////
	    static public function compareFunctionAsString(fieldName:String, obj1:Object, obj2:Object):int
	    {
	    	var str1:String = obj1[fieldName].toString();
	    	var str2:String = obj2[fieldName].toString();
	    	var ret:int;
	    	if(str1 < str2)
	    		ret = -1;
	    	else if (str1 > str2)
	    		ret = 1;
	    	else 
	    		ret = 0;
	      	return ret;
	    }
		///////////////////////////////
	}
}

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

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

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


 


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


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