You could use a FormView and bind the data to the controls:
MSDN:Data-Binding Expressions Overview
When the Update button for the row is clicked, the values of each control property bound using Bind syntax are extracted and passed to the data source control for the update operation.
<asp:FormView ID="FormView1"
DataSourceID="SqlDataSource1"
DataKeyNames="CustomerID"
RunAt="server">
<EditItemTemplate>
<table>
<tr>
<td align=right>
<b>Customer ID:</b>
</td>
<td>
<%# Eval("CustomerID") %>
</td>
</tr>
<tr>
<td align=right>
<b>First Name:</b>
</td>
<td>
<asp:TextBox ID="EditFirstNameTextBox" RunAt="Server"
Text='<%# Bind("FirstName") %>' />
</td>
</tr>
<tr>
<td align=right>
<b>Last Name:</b>
</td>
<td>
<asp:TextBox ID="EditLastNameTextBox" RunAt="Server"
Text='<%# Bind("LastName") %>' />
</td>
</tr>
<tr>
<td colspan="2">
<asp:LinkButton ID="UpdateButton" RunAt="server"
Text="Update" CommandName="Update" />
<asp:LinkButton ID="CancelUpdateButton" RunAt="server"
Text="Cancel" CommandName="Cancel" />
</td>
</tr>
</table>
</EditItemTemplate>
</asp:FormView>