98 messaggi dal 10 aprile 2001
Ciao !
in una gridview "normalissima", ho impostato il paging, per comodità supponiamo sia 10 record per pagina.
Supponiamo che mi trovi nella prima pagina di 10 record. Clicco il pulsante di comando che mi redirige al record di dettaglio della riga selezionata, che scatena l'evento GridView1_RowCommand. Fin qui tutto bene, mi si apre correttamente la pagina desiderata.
Ora vado alla pagina successiva, per vedere i record da 11 a 20. Clicco (per esempio) sul secondo in lista, e mi apre la pagina di dettaglio relativa al secondo in lista della prima paginata.... !
il comando che utilizzo per recuperare il valore è:
string idC = Convert.ToString(GridView1.Rows[index].Cells[0].Text.ToString());

done Cells[0] è la cella della gridview che contiene il valore da recuperare.
Grazie !
Nicola

it ain't over until the fat lady sings
226 messaggi dal 08 ottobre 2010
Se ricordo bene la paginazione va tenuta in memoria e impostata ad ogni evento, perchè in pratica quando cambi pagina generi un evento che imposta la pagina desiderata, poi però quando clicchi su un altro evento la paginazione si perde e dunque ricarica la pagina, imposta la paginazione a 0 e ti prende la seconda riga.

Prova a usare una variabile di sessione per tenere in memoria la paginazione e ad ogni init della pagina la reimposti, così il RowCommand prende l'indice della riga della pagina della gridView corretta

EDIT:
mi edito,
La soluzione di TeoProme è quella giusta, anche se invece di e.CommandArgument dovrebbe andare anche e.RowIndex
Modificato da Verce84 il 21 ottobre 2010 10.23 -
710 messaggi dal 13 novembre 2008
Contributi
se hai un comando dovresti poter recuperare l'indice giusto così

void GridView1_RowCommand(Object sender, GridViewCommandEventArgs e)
{

int index = Convert.ToInt32(e.CommandArgument);

GridViewRow row = GridView1.Rows[index];

...
98 messaggi dal 10 aprile 2001
bhe si in effetti un paio di righe sopra c'è proprio questa istruzione (che ho omesso nel primo post)

int index = Convert.ToInt32(e.CommandArgument);

che mi serve proprio per fare quello che pensavo, ma non va....
mumble mumble.....
dov'è l'inghippo ?

it ain't over until the fat lady sings
678 messaggi dal 12 maggio 2001
www.idioteca.it
io ormai uso sempre componenti Telerik, ma generalmente queste operazioni le faccio nell'evento itemCommand e non cambia molto rispetto al gridview standard.
Ho un pulsante/linkbutton nella griglia e intercetto l'evento

Te lo scrivo in vb, ma tanto non è complicato da convertire al volo.
Protected Sub mioGrid_ItemCommand(ByVal source As Object, ByVal e As Telerik.Web.UI.GridCommandEventArgs)
     If e.CommandName = "mioCommandName" Then
          Dim mioIdAs Integer = CType(e.Item.OwnerTableView.DataKeyValues(e.Item.ItemIndex)("mioId"), Integer)
          ' e qui fai quello che ti serve
     End if
End Sub

Eventualmente ti salvi anche un CommandArgument e recuperi anche quello.
ciao

Edit:
Ho appena trovato questo...guarda se può servirti come inizio:
http://www.aspitalia.com/script/941/Gestire-Meglio-Eventi-RowCommand-GridView-Command-DetailsView-FormsView-Classe.aspx
Modificato da giangi_77 il 21 ottobre 2010 16.20 -

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.