Paso uno:
Si el botón no es Template, pasalo. y en el código del botón pon esto:
Código:
<asp:TemplateField HeaderText="Acción">
<ItemTemplate>
<asp:Button ID="btnEditar" runat="server" Text="Editar" CommandArgument='<%# Eval("Nombre DataField de la columna 1") + "," + Eval("Nombre DataField de la columna 2") + "," + Eval("Nombre DataField de la columna 3") + "," + Eval("Nombre DataField de la columna 4")+ "," + Eval("Nombre DataField de la columna n")%>' runat="server" OnCommand="EditarFilaSeleccionada" />
</ItemTemplate>
</asp:TemplateField>
Paso dos:
En el code behind de tu pagina crea un método con el mismo nombre del OnCommand de tu botón, así:
Código:
protected void EditarFilaSeleccionada( object sender, CommandEventArgs e )
{
var datosFila = e.CommandArgument.ToString().Split( ',' );
//La pocisión va de acuerdo a como construiste el Command Argument en nuestro caso es:
string campoColumnaUno = datosFila[ 0 ].ToString();
string campoColumnaDos = datosFila[ 1 ].ToString();
string campoColumnaTres = datosFila[ 2 ].ToString();
string campoColumnaCuatro = datosFila[ 3 ].ToString();
string campoColumnaN = datosFila[ 4 ].ToString();
//Asignas cada variable con tu control de texto respectivamente
txtcampoColumnaUno.Text = campoColumnaUno;
txtcampoColumnaDos.Text = campoColumnaDos;
txtcampoColumnaTres.Text = campoColumnaTres;
txtcampoColumnaCuatro.Text = campoColumnaCuatro;
txtcampoColumnaN.Text = campoColumnaN;
// y Listo!!! la información de la fila seleccionada ya está en tus controles
}