I suspect your column number 3 is not a
BoundField.
If you want to get the content of your BoundField, then you can use
row.Cells[2].Text
But, if it is a template field then you need to find the control to which the text is assigned just like you have done for the FileUpload control.
i.g,
Label lbl= (Label) row.FindControl("lblName");
Hope, it helps :)
Please let me know if I am missing something here.