replace your last cod block with this
you can not get directly value from textbox ..you have to find that control by id
gridview
<asp:GridView ID="ESBAndTSRValuesInputGridView" runat="server" ShowFooter="true"
AutoGenerateColumns="false">
<Columns>
<asp:TemplateField HeaderText="Award Name">
<ItemTemplate>
<asp:Label ID="lblAwardID" runat="server" Text='<%# Eval("AwardID") %>' Style="display: none;"></asp:Label>
<asp:Label ID="lblAwardName" runat="server" Text='<%# Eval("AwardName") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="ESBValue">
<ItemTemplate>
<asp:TextBox ID="ESBValue" Text='<%# Eval("ESBValue") %>' runat="server"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="TSRValue">
<ItemTemplate>
<asp:TextBox ID="TSRValue" Text='<%# Eval("TSRValue") %>' runat="server"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
get values
for (int rowCount = 0; rowCount < ESBAndTSRValuesInputGridView.Rows.Count; rowCount++)
{
int cell0Val, cell1Val, cell2Val, cell3Val;
//input text is blank for all:
//TryParse returns false for all (because if I use Parse instead, exception occurs):
Int32.TryParse(((Label)ESBAndTSRValuesInputGridView.Rows[rowCount].FindControl("lblAwardID")).Text, out cell0Val);
Int32.TryParse(((Label)ESBAndTSRValuesInputGridView.Rows[rowCount].FindControl("lblAwardName")).Text, out cell1Val);
Int32.TryParse(((TextBox)ESBAndTSRValuesInputGridView.Rows[rowCount].FindControl("ESBValue")).Text, out cell2Val);
Int32.TryParse(((TextBox)ESBAndTSRValuesInputGridView.Rows[rowCount].FindControl("TSRValue")).Text, out cell3Val);
Int32.TryParse(ESBAndTSRValuesInputGridView.Rows[rowCount].Cells[3].Text, out cell3Val);
int val1 = Int32.Parse(ESBAndTSRValuesInputGridView.Rows[rowCount].Cells[0].Text);
int val2 = Int32.Parse(dr["AWARDID"].ToString());
if (val1 == val2)
{
rowIndex = rowCount;
break;
}
}