use for each loop it will be easier to get the values from respective gridviewrow. It will definitely work.
for each(grdviewrow grv in gvpostslambook.rows
{
textbox txtanswer=grv.findcontrol("txt");
prpobj.answer = txtanswer.Text.Trim();
mainobj.postslambook(prpobj);
}
lblmsg.Text = "Slambook sent";
Response.Redirect("~/User/Slambook_Sent_Status.aspx");
}
else
{
lblmsg.Text = "You have already filled this person's slambook";
}