# Datagrid bug scroll

**URL:** <https://forum.kirupa.com/t/datagrid-bug-scroll/327413>\
**Category:** Uncategorized\
**Created:** [February 27, 2012, 11:58pm UTC](https://forum.kirupa.com/t/datagrid-bug-scroll/327413 "2012-02-27T23:58:49Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![tagamoshi](https://avatars.discourse-cdn.com/v4/letter/t/53a042/32.png) [@tagamoshi](https://forum.kirupa.com/u/tagamoshi)\
**Post date:** [February 27, 2012, 11:58pm UTC](https://forum.kirupa.com/t/datagrid-bug-scroll/327413/1 "2012-02-27T23:58:49Z")

</div>

Hie  
I use fl.controls.DatGrid in a dashboard application developped in flash adobe cs5. I know is better in flex but I begin like this. I use yahoo layout to display the dimension without distorsion and cellRenderer to manage color externally.  
But I have a bug when I scroll the datagrid manually : the column number 2 take the content of the column 1 and etc…This is a knowed bug but I can’t find a good solution to manage it. I can’t use validateNow with dataGrid to refresh because i don’t extends cellRenderer class : is there anybody having the same bug ?  
Thanks in advance

Here is the code

package  
{  
import fl.controls.ComboBox;  
import fl.controls.DataGrid;  
import fl.controls.dataGridClasses.DataGridColumn;  
import fl.controls.listClasses.ICellRenderer;  
import fl.controls.listClasses.ListData;  
import fl.core.InvalidationType;  
import fl.core.UIComponent;  
import fl.data.DataProvider;  
import fl.events.ListEvent;

```
import flash.display.Bitmap;
import flash.display.DisplayObject;
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.net.URLRequest;
import flash.text.AntiAliasType;
import flash.text.TextField;
import flash.text.TextFieldType;
import flash.text.TextFormat;
import flash.text.TextFormatAlign;

```

.  
public class CockpitCellRenderer extends UIComponent implements ICellRenderer  
{  
// … REFERENCE AL DATAGRID  
private var \_loader:Loader;  
private var datagrid :CockPitDataGrid;  
protected var \_data:Object;  
protected var \_listData:ListData;  
private var \_selected :Boolean;

```
	// ... TEXTFIELD 
	private var _textField :TextField;
	private var _textFormat :TextFormat;

	private var _w :Number;
	private var _h :Number;
	private var _colorCell :String;
	private var bIndex:Boolean=true;

	public function CockpitCellRenderer()
	{
		super();
		buildComponents();
	}

	private function buildComponents()
	{
		buildTextFormat();
		buildText();
		mouseChildren = false;
		buttonMode = false;
	}

	private function buildTextFormat():void
	{
		
		_textFormat = new TextFormat();
		_textFormat.size = 10;
		_textFormat.color = 0x000000;
		_textFormat.font = "Verdana"
		_textFormat.bold = false;
	}

	private function buildText():void
	{
		_textField = new TextField();
		_textField.type = TextFieldType.DYNAMIC;
		_textField.antiAliasType=AntiAliasType.ADVANCED;
		_textField.height = 10;
		_textField.selectable=false;
		_textField.embedFonts=true;
		this.addChild(_textField);
	}

	public function set data(newData:Object):void
	{

		_data = newData;
	}

	public function get data():Object
	{
		return _data;
	}
	public function set listData(newListData:ListData):void 
	{
		bIndex=true;
		_listData = newListData;
		invalidate(InvalidationType.DATA);   
		invalidate(InvalidationType.STATE);
		updateCell();
	}
		
	private function updateCell():void{
		

		datagrid=CockPitDataGrid(_listData.owner);

		_w=this.width;
		_h = datagrid.rowHeight;
		var rowcolor1:String=datagrid.dataXML.headerrow.cell[_listData.column].@rowcolor1;
		var rowcolor2:String=datagrid.dataXML.headerrow.cell[_listData.column].@rowcolor2;
		var colorRow:String=datagrid.dataXML.rows.row[_listData.index].@color;
		var colorCol:String=datagrid.dataXML.headerrow.cell[_listData.column].@colorCol;

		
		
		var colorCell:String;
		if(colorCol!="" ){
			colorCell=colorCol;
		}else{
			if(rowcolor1!="" && rowcolor2!="" ){
				if(_listData.index % 2 == 0){
					if(colorRow!=""){
						colorCell=colorRow;
					}else{
						colorCell=rowcolor1;
					}
				}else{
					//on colore ligne entiere qui doit se colorer
					if(colorRow!=""){
						colorCell=colorRow;
					}else{
						colorCell=rowcolor2;
					}
				}
			}		
		}
		if(datagrid.name=="smallGrid" && _listData.index==(datagrid.length-1)) _textFormat.bold=true;

		drawCell(_w,_h,uint(colorCell));
		
		_colorCell=colorCell;
		
		
		if(datagrid.dataXML.headerrow.cell[_listData.column].@image=="true"){
			_loader=new Loader();
			var url:URLRequest=new URLRequest(Suadeo.root.xmlSite.@imageURL+_data["col"+ String(_listData.column)]);
			_loader.contentLoaderInfo.addEventListener(Event.C OMPLETE,onComplete)
			_loader.load(url);	
			_textField.text="";
			
		}else{
			var dataalign:String=datagrid.dataXML.headerrow.cell[_listData.column].@dataalign;
			_textField.text = _data["col"+ String(_listData.column)];
			_textField.width=_w;
			_textFormat.align = dataalign;

		}
		_textField.setTextFormat(_textFormat);

	}

	private function onComplete(e:Event):void{
		
		var bmp:Bitmap=Bitmap(e.target.content) as Bitmap;
		this.addChild(bmp);
		bmp.scaleX=0.6;
		bmp.scaleY=0.6;
		bmp.x=this.width/2-bmp.width/2;
		bmp.y=this.height/2-bmp.height/2;
		bmp.smoothing=true;
		
	}

	public function get listData():ListData
	{
		return _listData;
	}

	private function drawCell(w:Number, h:Number,pColor:uint):void
	{
	
		graphics.clear();
		graphics.beginFill(pColor);	
		graphics.drawRect(1, 1, w-1, h-1);
		graphics.endFill();            

	}

}

```

}

```
	  		  		  		  		  		  		 			 			 				 				[[IMG]http://www.flashxpress.net/forum/images/buttons/edit.gif[/IMG]](http://www.flashxpress.net/forum/editpost.php?do=editpost&p=525106)
```
