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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 01.02.2007, 21:13
baron27 вне форума Посмотреть профиль Отправить личное сообщение для baron27 Посетить домашнюю страницу baron27 Найти все сообщения от baron27
  № 1  
Ответить с цитированием
baron27
Контрибьютор базы знаний по Флекс
 
Аватар для baron27

Регистрация: Aug 2005
Сообщений: 690
По умолчанию Изменение цвета ряда DataGrid в зависимости от значения датапровайдера

Привет!
Каким образом можно прорисовывать цвет ряда в датагриде в зависимости от значения, полученного из датапровайдера?
__________________
Flex 2 и Co

Старый 01.02.2007, 21:47
Nirth вне форума Посмотреть профиль Отправить личное сообщение для Nirth Посетить домашнюю страницу Nirth Найти все сообщения от Nirth
  № 2  
Ответить с цитированием
Nirth
4AM Games
 
Аватар для Nirth

блогер
Регистрация: Nov 2002
Адрес: Sofia
Сообщений: 6,264
Записей в блоге: 1
Отправить сообщение для Nirth с помощью ICQ Отправить сообщение для Nirth с помощью AIM Отправить сообщение для Nirth с помощью MSN Отправить сообщение для Nirth с помощью Yahoo Отправить сообщение для Nirth с помощью Skype™
http://flasher.ru/forum/showpost.php...98&postcount=5

не подойдет?
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^

Старый 01.02.2007, 22:30
Nirth вне форума Посмотреть профиль Отправить личное сообщение для Nirth Посетить домашнюю страницу Nirth Найти все сообщения от Nirth
  № 3  
Ответить с цитированием
Nirth
4AM Games
 
Аватар для Nirth

блогер
Регистрация: Nov 2002
Адрес: Sofia
Сообщений: 6,264
Записей в блоге: 1
Отправить сообщение для Nirth с помощью ICQ Отправить сообщение для Nirth с помощью AIM Отправить сообщение для Nirth с помощью MSN Отправить сообщение для Nirth с помощью Yahoo Отправить сообщение для Nirth с помощью Skype™
Вообще не совсем понятно.

Дело в том что дата провайдер содержит в себе объекты, которые передаются ячейкам, тоесть дата провайдер не содержит в себе информации для самой колонки.

Есть два способа, либо реализовать возможность смены цвета у каждой ячейки в отдельности (тогда нужно передавать, каждой ячейке цвет), либо вывести цвета в отдельное свойство.

Есть вариант через задницу, это задавать цвет скажем только первому эллементу в колонке, и остальные ячейки берут значение первого эллемента.

Вот например если юзать отдельное свойство colors

Код:
package controls
{
	import mx.controls.DataGrid;
	import mx.core.ClassFactory;
	import mx.collections.ArrayCollection;
	import mx.controls.dataGridClasses.DataGridColumn;

	public class ColoredDataGrid extends DataGrid
	{
		private var _colors:Array;
		
		public function ColoredDataGrid()
		{
			super();
			
			itemRenderer = new ClassFactory(ItemRenderer);
		}
		[Bindable]
		[Inspectable]
		public function set colors(value:Object):void
		{
			if(value is ArrayCollection)
			{
				_colors = (value as ArrayCollection).source;
			}
			else if(value is Array)
			{
				_colors = value as Array;
			}
			
			for (var i:Number = 0; i < _colors.length; i++)
			{
				if(columns[i] != null)
				{
					(columns[i] as DataGridColumn).setStyle("backgroundColor", _colors[i]);
				}
			}
		}
		public function get colors():Object
		{
			return _colors
		}
	}
}
	import mx.controls.Label;
	import controls.ColoredDataGrid;
	import mx.controls.dataGridClasses.DataGridListData;
	

class ItemRenderer extends Label
{
	override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
	{
		super.updateDisplayList(unscaledWidth, unscaledHeight);
		
		var ld:DataGridListData = listData as DataGridListData;
		var dg:ColoredDataGrid  = ld.owner as ColoredDataGrid;
		
		trace(ld.rowIndex);
		trace(this.text);
		trace("");
		
		/*if(ld.rowIndex > 0 && dg.colors != null && dg.colors[ld.columnIndex] != null)
		{
			graphics.beginFill(dg.colors[ld.columnIndex]);
			graphics.drawRect(0, 0, unscaledWidth, unscaledHeight);
			graphics.endFill();
		}*/	
	}
}
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^


Последний раз редактировалось Nirth; 01.02.2007 в 22:36.
Старый 02.02.2007, 00:30
baron27 вне форума Посмотреть профиль Отправить личное сообщение для baron27 Посетить домашнюю страницу baron27 Найти все сообщения от baron27
  № 4  
Ответить с цитированием
baron27
Контрибьютор базы знаний по Флекс
 
Аватар для baron27

Регистрация: Aug 2005
Сообщений: 690
Цитата:
Сообщение от Nirth
спасибо. Видел. Наверное придется использовать это.

Кстати, по поводу
>> Вот например если юзать отдельное свойство colors

Цвет надо передавать в датапровайдере? Я не совсем понял. Можешь привести примерчик...
__________________
Flex 2 и Co

Старый 02.02.2007, 01:15
Nirth вне форума Посмотреть профиль Отправить личное сообщение для Nirth Посетить домашнюю страницу Nirth Найти все сообщения от Nirth
  № 5  
Ответить с цитированием
Nirth
4AM Games
 
Аватар для Nirth

блогер
Регистрация: Nov 2002
Адрес: Sofia
Сообщений: 6,264
Записей в блоге: 1
Отправить сообщение для Nirth с помощью ICQ Отправить сообщение для Nirth с помощью AIM Отправить сообщение для Nirth с помощью MSN Отправить сообщение для Nirth с помощью Yahoo Отправить сообщение для Nirth с помощью Skype™
В моем случае я цвет подаю через свойство colors

Код:
<myNamespace:ColoredDataGrid colors="{[0xF2F2F2, 0xFF6600]}"......
можно и через дата провайдер, скажем сохранять цвета в нулевой позиции, и потом сносить ее(нулевую позицию), чтобы она не рендерилась.
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^

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

Регистрация: Aug 2005
Сообщений: 690
Ага, ясно, спасибо!
Блин, нафига убрали только
dg.setPropertiesAt(2, {backgroundColor:0xFF0000})...
__________________
Flex 2 и Co

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

Регистрация: Aug 2005
Сообщений: 690
использовал вариант http://flasher.ru/forum/showpost.php...98&postcount=5

При использовании ColoredDataGrid все почему-то тормозит.
__________________
Flex 2 и Co

Старый 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

Старый 09.02.2007, 17:20
Nirth вне форума Посмотреть профиль Отправить личное сообщение для Nirth Посетить домашнюю страницу Nirth Найти все сообщения от Nirth
  № 9  
Ответить с цитированием
Nirth
4AM Games
 
Аватар для Nirth

блогер
Регистрация: Nov 2002
Адрес: Sofia
Сообщений: 6,264
Записей в блоге: 1
Отправить сообщение для Nirth с помощью ICQ Отправить сообщение для Nirth с помощью AIM Отправить сообщение для Nirth с помощью MSN Отправить сообщение для Nirth с помощью Yahoo Отправить сообщение для Nirth с помощью Skype™
у меня сейчас времени мало, можешь демонстрацию сделать?
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^

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

Регистрация: Aug 2005
Сообщений: 690
http://gorbatov.org/tests/coloredDG/
__________________
Flex 2 и Co

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

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

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


 


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


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