Suppongo che il tuo problema sia dovuto al fatto che rinunci a personalizzare il modo in cui i dati vengono presentati nella pagina .aspx, cioè colleghi la griglia ad una sorgente di dati attraverso la proprietà DataSource, chiami il metodo DataBind e lasci che il framework realizzi il tutto.
Esiste la possibilità di definire una specie di "modello" con cui ciascuna riga deve essere presentata; con tale modello, si previene la gestione incorporata del framework e si definiscono precisamente come devono apparire le colonne.
Ad esempio, nelle pagine in cui desidero personalizzare il modo in cui i dati appaiono, aggiungo al tag <asp:datagrid> il seguente contenuto:
codice:
<asp:datagrid ID="idGriglia" AutoGenerateColumns="False" Runat="server">
<columns>
<asp:templatecolumn>
<itemtemplate>
<%# ((DataRowView) Container.DataItem)["NomeCampo"] %></div>
</itemtemplate>
</asp:templatecolumn>
<asp:templatecolumn>
<itemtemplate>
...
</itemtemplate>
</asp:templatecolumn>
<asp:templatecolumn>
<itemtemplate>
...
</itemtemplate>
</asp:templatecolumn>
...
</columns>
</asp:datagrid>
Ogni tag </asp:templatecolumn> corrisponde ad una colonna della griglia; al suo interno, viene inserito un tag <itemtemplate> per definire l'aspetto dell'elemento (nell'esempio sopra, viene riportato il contenuto del campo NomeCampo così come prelevato dal database, ma è possibile aggiungere HTML per definire lo stile di formattazione o altri elementi accessori come link ipertestuali che hanno come indirizzo di riferimento (HREF) una pagina di dettaglio la quale accetta come parametro l'ID del record estratto con una scrittura del tipo:
Container.DataItem si riferisce all'elemento dal quale vengono prelevati i dati da visualizzare; nell'esempio, tale elemento è un DataRowView, poichè la griglia è associata ad un DataView, la vista di una tabella contenuta all'interno di un DataSet.
Spero di averti fornito sufficienti indicazioni per iniziare a studiarci sopra. 
Ciao!