How to add draw a square selection indicator in Adobe Flash/Flex DataGrid
- February 6th, 2012
- By thearchitect
- Write comment
During our work on our application, we wanted to highlight a selected row in a DataGrid by drawing a colored square around the selection. This turned out to be a bit more complicated than what we originally suspected. The final solution we used? We wrote our own DataGrid component that just overrides one function.
Our Grid:
package com.ps.UI
{
import mx.controls.DataGrid;
import flash.display.Sprite;
import mx.collections.IList;
import mx.controls.listClasses.IListItemRenderer;
import flash.display.Graphics;
public class PSGrid extends DataGrid
{
public function PSGrid()
{
super();
}
override protected function drawSelectionIndicator(indicator:Sprite, x:Number, y:Number,width:Number, height:Number, color:uint,itemRenderer:IListItemRenderer):void
{
var g:Graphics = Sprite(indicator).graphics;
g.clear();
g.beginFill(0xF58A38);
g.drawRect(0, 0, unscaledWidth - viewMetrics.left - viewMetrics.right, 2);
g.drawRect(0,height-2,unscaledWidth - viewMetrics.left - viewMetrics.right,2);
g.endFill();
indicator.x = x;
indicator.y = y;
}
}
}
And to use the updated grid in your application just make sure to import the grid into your source and use as follows:
<psg:PSGrid height="100%" id="certificatesgrid" dataProvider="data">
<psg:columns>
<mx:DataGridColumn id="col1" dataField="col1" />
<mx:DataGridColumn id="col2" dataField="col2" />
<mx:DataGridColumn id="col3" dataField="col3" />
</psg:columns>
</psg:PSGrid>


