Para manipular os dados de um GridView, podemos utilizar os eventos RowCreated ou RowDataBound.
Ao dar um duplo clique sobre um dos eventos citados, o Visual Studio criará um método com dois parâmetros: “sender” do tipo object e “e” do tipo GridViewRowEventArgs
Este método é chamados para cada linha do grid, inclusive o cabeçalho, rodapé e paginamento.
O parâmetro “e” contém informações sobre a linha atual do GridView. Usando a propriedade Rows.Cells deste objeto podemos obter os dados diretamente no grid.
e.Row.Cells[indice]
onde indice é o índice dos seus dados conforme foi criado com a opção Edit Coluns do GridView Tasks. Lembrando que o índice começa com zero.
Esta opção é meio fraquinha pois as colunas com a opção visibe setada como false não retornam os dados, e os campos null são retornados como caracteres de espaço em html.
A melhor forma é pegar os dados pela propriedade DataItem. Como esta propriedade retorna um objeto do tipo object, é preciso dar um cast para converter para o tipo apropriado. No caso de se utilizar o GridView ligado a um DataSource para mostrar os dados de um Database diretamente, o cast deverá ser feito da seguinte forma.
System.Data.DataRowView vRow = (System.Data.DataRowView)e.Row.DataItem;
Para manipular os dados é só utilizar o objeto vRow:
vRow["SeuCampo"]
Caso o DataSource esteja sendo utilizado para mostrar dados vindo de um Object, o cast deverá ser feito utilizando a classe do objeto em questão. Ex.:
MinhaClasse meuobjeto = (MinhaClasse)e.Row.DataItem;
Daí é só utilizar as propriedades e métodos da sua classe.