Для каждой строки вы можете использовать что-то вроде следующего, чтобы получить индекс по имени, а затем использовать его для доступа к правильному столбцу.
int GetColumnIndexByName(GridViewRow row, string searchColumnName)
{
int columnIndex = 0;
foreach (DataControlFieldCell cell in row.Cells)
{
if (cell.ContainingField is BoundField)
{
if (((BoundField)cell.ContainingField).DataField.Equals(searchColumnName))
{
break;
}
}
columnIndex++;
}
return columnIndex;
}
В любом случае вам нужно создать вспомогательные методы, которые будут идти по имени вместо индекса.