c1.headerRenderer это ссылка на класс, а не на экземпляр хедера, поэтому и ругается
как 'легально' добраться до самого хедера не знаю, мутные эти компоненты, говорю же
если это чем-то поможет, то у меня вот так получилось расставить иконки

Код AS3:
var dg:DataGrid = new DataGrid();
dg.setSize(300, 100);
dg.addItem( { first:1, second:2, third:3 } );
dg.setStyle("headerRenderer", MyHeaderRenderer);
addChild(dg);

Код AS3:
public class MyHeaderRenderer extends HeaderRenderer
{
public function MyHeaderRenderer()
{
// здесь _column не определена еще, поэтому делаем все в следующем такте
addEventListener(Event.ENTER_FRAME, this_enterFrame);
}
private function this_enterFrame(e:Event):void
{
removeEventListener(Event.ENTER_FRAME, this_enterFrame);
// массив классов иконок в библиотеке
var icons:Array = [zag1, zag2, zag3];
var iconClass:Class = icons[_column] as Class;
if (iconClass)
{
icon = new iconClass();
addChild(icon);
invalidate();
}
}
}
зы. ну и какой смысл по каждому пустяку заниматься такими шаманством
хотя, возможно, я чего-то не догоняю и все делается просто и изящно..