From the provided code fragments my guess is that calling BindGridTimeDeduction after the foreach loop reloads/resets the data.
This seems to support that conclusion:
if (!IsPostBack)
{
BindGridTimeDeduction();
}
If I'm wrong you have to provide a more detailed description (and code) to get a sensible answer
Regards
Espen Harlinn