vi spiego la situazione ho un datagrid che visualizza i dati inseriti fino a quel momento !
cliccando su modifica vengono visualizzati i dati inseriti abilitati per la modifica (i campi sono due un textBox per il titolo della news e una textArea per il testo vero e proprio della news)

questo è il codice che associo al link che conferma la modifica

function UpdateDataStore(e as DataGridCommandEventArgs) as boolean
dim i,j as integer
dim params(2) as string
dim strText as string
dim blnGo as boolean = true

j = 0
for i = 1 to e.Item.Cells.Count - 3

strText = Ctype(e.Item.Cells(i).Controls(0), TextBox).Text
if strText <> "" then
params(j) = strText
j = j + 1
else
blnGo = false
lblMessage.Text = "Non hai inserito un valore"
end if
next

if not blnGo then
return false
exit function
end if

dim strSQL as string = "UPDATE tbnews SET titolo = '"& Replace(params(0), "'" , "''") & "', testo = '"& Replace(params(1), "'" , "''") & "'" & _
" WHERE id = " & CType(e.item.cells(0).Controls(1), Label).Text

ExecuteStatement(strSQL)
return blnGo
end function


mentre questa è la tecnica che utilizzo per visualizzare una textArea in fase di modifica al posto del classico TextBox

<asp:TemplateColumn HeaderText="Testo News">
<ItemTemplate>
<%#DataBinder.Eval(Container.DataItem, "testo") %>
</ItemTemplate>
<EditItemTemplate>
<nobr />
<asp:TextBox runat="server" width="500" TextMode="MultiLine" Rows="15" id="testo" Text='<%# DataBinder.Eval(Container.DataItem, "testo") %>' />
</EditItemTemplate>
</asp:TemplateColumn>

poi ovviamente ho le altre colonne!!!

l'errore me lo da in questa riga

strText = Ctype(e.Item.Cells(i).Controls(0), TextBox).Text

System.InvalidCastException: Cast specificato non valido.

come posso fare?