Wednesday, May 19, 2010

Setting textSelectedColor in a DataGrid itemRenderer

Setting the textSelectedColor style for a DataGrid works for cells using the default itemRenderer, but does not apply to cells using custom itemRenderers. The list of itemRenderers can be exposed by extending the DataGrid class;

package
{
  import mx.controls.DataGrid;
  import mx.controls.dataGridClasses.DataGridHeader;

  public class ExtendedDataGrid extends DataGrid
  {
    public function get itemRenderersy():Array
    {
      return listItems;
    }
  }
}

We can then iterate through this array to apply styles;

private function setRowFontColour() {
 //itemrenderer does not display datagrid textSelectedColor style so we have to set it here.
 var itemRenderers:Array = MyDataGrid.listRendererArray;
  for (var i:int = 0; i < itemRenderers.length; i++) {
   if (itemRenderers[i].length > 0) {
    if (MyDataGrid.isItemSelected(itemRenderers[i][0].data)) {
     for (var j:int = 0; j < itemRenderers[i].length; j++) {
      itemRenderers[i][j].setStyle("color","white");
     }
    } else {
     for (var j:int = 0; j < itemRenderers[i].length; j++) {
     itemRenderers[i][j].setStyle("color","black");
    }
   }
  }
 }
}

Call the update on change and scroll events from the DataGrid;


0 comments:

Post a Comment

What do you think?