you might have first two columns as item templates which contains some other controls inside due to which .TEXT may retun string.Empty
Use
row.Cells[i].FindControl('YourControlName')
i.e.
TextBox objText = (TextBox) row.Cells[i].FindControl('YourTextBoxId');
string value = objText.Text;