Ciao ho una gridview nella quale ho un pulsante per la modifica di alcuni campi.
Se visualizzo la grid con tutti i campi lo script funziona ma se per esigenze estetiche voglio visualizzare solo alcune colonne( sulla proprieta boundfield ho messo visible=false) la popup contentente le textbox che dovrebbero riempirsi di valori sono vuote.

Ho letto che tra le possibili soluzioni si può valorizzare il datakeynames con i nomi delle colonne.
Quidi ho fatto cosi:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="id,cap" DataSourceID="SqlDataSource1">

ma poi non ho capito come prendere il secondo valore perche se al textbox della popup scrivo una cosa del genere

cap.Text = gvrow.DataItemIndex
mi valorizza id della riga ma non il cap

Il codice che posto sotto è quello che uso ora per prendere i valori visibili
----------
Protected Sub imgbtn_Click(ByVal sender As Object, ByVal e As ImageClickEventArgs)

Dim btndetails As ImageButton = TryCast(sender, ImageButton)

Dim gvrow As GridViewRow = DirectCast(btndetails.NamingContainer, GridViewRow)

lblid.Text = GridView1.DataKeys(gvrow.RowIndex).Value.ToString( )

id_societa.Text = gvrow.Cells(1).Text
denominazione.Text = gvrow.Cells(2).Text
indirizzo.Text = gvrow.Cells(3).Text
citta.Text = gvrow.Cells(4).Text
------------------------------
Mi date una mano per capire come risolvere questa cosa?
Grazie ciao