Use TemplateFields for each column, if the column need to be displayed on normal and edit mode, include the it in both
EditItemTemplate
and
ItemTemplate
. if the control need to be show in only editing , include only
EditItemTemplate
like below
<asp:templatefield headertext="FirstName" sortexpression="FirstName" xmlns:asp="#unknown">
<edititemtemplate>
<asp:textbox id="TextBox1" runat="server" text="<%# Bind("FirstName") %>"></asp:textbox>
</edititemtemplate>
<itemtemplate>
</itemtemplate>
</asp:templatefield>