Sto impazzendo nel tentativo di leggere il valore contenuto in una textbox inserita in una cella di un gridview.

Il gridview è costituito da boundfield e da una colonna con textbox.
Si tratta di un semplice carrello della spesa. La colonna con textbox è relativa alla quantità che l'utente può variare.

codice:
<columns>
			<asp:BoundField HeaderText="Cod." DataField="idprodotto" />
			<asp:BoundField HeaderText="Prodotto" DataField="prodotto" />
			<asp:TemplateField HeaderText="Q.tà">
			<ItemTemplate>
			<asp:TextBox Columns="4" ID="txtQuant" Text='<%# Eval("quantita") %>' runat="server" />
			</ItemTemplate>
			</asp:TemplateField>
...segue
Se eseguo un ciclo come questo
codice:
		
for(int j=0; j < totRecord; j++){
			
	TextBox mybox =  (TextBox) griglia.Rows[j].Cells[2].FindControl("txtQuant");
		
        modifica_quantita(Convert.ToInt32(griglia.Rows[j].Cells[0].Text), Convert.ToInt32(mybox.Text));	
					
			}
riesco a recuperare i valori dei boundfield ma non della text box.

Invece in questo modo succede il contrario:

codice:
foreach (GridViewRow row in griglia.Rows) {
											
		TextBox mybox = (TextBox) row.FindControl("txtQuant");
		
             modifica_quantita(row , Convert.ToInt32(mybox.Text));
      			
	}
cioè recupero il valore delle textbox ma non dei boundfield