O DataGrid e o AdvancedDataGrid, entre outros, são componentes que só existem por causa dos dados. Sem dados, a existência deles não tem o menor sentido. São os data-driven components, componentes que mostram um conjunto de dados ao usuário.
Para definir o conjunto de dados que vai popular o DataGrid, definimos a propriedade dataProvider, e nas colunas definimos qual campo desse dataProvider será usado para cada uma delas através da propriedade dataField.
Só que algumas vezes o conteúdo da célula da nossa tabela não é o mesmo conteúdo daquele campo do dataProvider. Por exemplo, ao invés de “1″ ou “0″ que estão armazenados no banco você queira mostrar textos como “Sim” ou “Não”, respectivamente, ou ainda mostrar uma imagem (usando um ItemRenderer – calma, isso é assunto pra outro artigo
). Para isso, definimos a propriedade labelFunction da coluna.
Até aqui nada de novo. Mas o que não é muito comentado por aí é que, quando definimos a propriedade labelFunction (e não definimos dataField), o DataGrid não sabe como ordenar a tabela caso o usuário clique no cabeçalho da coluna! A ordenação simplesmente não funciona, ou nos piores casos pode dar um erro em runtime.
Leia o restante do artigo