Показать сообщение отдельно
Старый 09.02.2007, 16:09
baron27 вне форума Посмотреть профиль Отправить личное сообщение для baron27 Посетить домашнюю страницу baron27 Найти все сообщения от baron27
  № 8  
Ответить с цитированием
baron27
Контрибьютор базы знаний по Флекс
 
Аватар для baron27

Регистрация: Aug 2005
Сообщений: 690
Переделал немного примере Питера Энта по отрисовке фонов рядов в гриде:

Код:
<?xml version="1.0" encoding="utf-8"?>
<mx:DataGrid xmlns:mx="http://www.adobe.com/2006/mxml">
	<mx:Script>
		<![CDATA[
		import mx.collections.ArrayCollection;
		
		public var keyCell:String;
		
			override protected function drawRowBackground(s:Sprite, rowIndex:int, y:Number, height:Number,
                                                   color:uint, dataIndex:int):void
		   {
		    
		   	if (dataIndex > (dataProvider as ArrayCollection).length-1) {
		   		return;	
		   	}
		   	var item:Object = (dataProvider as ArrayCollection).getItemAt(dataIndex);
			
			if( item[keyCell] == 0 ) {
				color = 0xf97a86;
			}
			else  {
				color = 0xFFFFFF;
			}
		    super.drawRowBackground(s,rowIndex,y,height,color,dataIndex);
		    }

		    
		]]>
	</mx:Script>
</mx:DataGrid>
Но вот в чем затык: например, датапровайдера хватает на 10 рядов и 10 ряд у нас красный, а теперь, если датапровайдер изменяется до 5 элементов, то эти пять элементов перекрашиваются правильно, а старый 10 ряд так и остается красным. Пробовал всякие там invalidate'ы - не помогает.
__________________
Flex 2 и Co