When your populate your grid you should add this condition in your rowdatabound event because 1st time rowdatabound runs with -ve index value.
if (e.Row.RowIndex != -1)
{
}
and then try doing this for getting the values from the textboxes:
Foreach(Datarow dr in Gridview1.Rows)
{
TextBox txtDummy = new TextBox;
txtDummy = (TextBox)e.Row.FindControl("textBoxID goes here"));
string dummy = txtDummy.text;
}
For ID see the source of the page and see whats the id its generating for your dynamic textboxes, it should be something like "
Gridview1_ctl02_textboxname_textbox"