2010-09-13 5 views
0

Mon problème est que dans le code ci-dessous, la propriété SelectedRow ne renvoie rien. Je lie manuellement les éléments à GridView à l'exécution et les propriétés autogeneratecolumns et autogenerateselectbutton sont vraies.GridView1.SelectedRow ne renvoyant rien

Je pense que le problème est d'avoir un PostBack quand on clique sur la commande Select.

Merci beaucoup.

Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles GridView1.RowCommand 
     Session("ContactID") = GridView1.SelectedRow.Cells(0).Text() 
     Response.Redirect("~/ContactAddress.aspx") 
End Sub 

Répondre

0

La ligne que vous voulez est accessible via e (le paramètre GridViewCommandEventArgs), plus précisément la valeur de e.CommandArgument qui aura l'index de ligne:

De here:

Pour déterminer l'indice de la ligne a déclenché l'événement, utilisez la propriété CommandArgument de l'événement argument transmis à l'événement. La classe ButtonField remplit automatiquement la propriété CommandArgument avec la valeur d'index appropriée. Pour autres boutons de commande, vous devez définir manuellement la propriété CommandArgument du bouton de commande. Pour l'exemple , vous pouvez définir le CommandArgument sur <% # Container.DataItemIndex%> lorsque le contrôle GridView n'a pas de pager activé. En plus de l'ajout de l'objet CommandArgument, vous devez remplacer votre code par ce qui suit:

+0

Comme une solution temporaire, j'ai utilisé l'événement SelectedIndexChanged pour obtenir ce que je veux, la propriété CommandArgument n'a pas vraiment aidé. Merci beaucoup. – bileyazan

0

La ligne sélectionnée se trouve dans le paramètre GridViewCommandEventArgs.

+0

C'est bien, mais quel est le problème à ce sujet? – bileyazan

+0

La ligne n'a pas encore été sélectionnée. –

0

Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles GridView1.RowCommand 
Dim rowNumber As Integer = e.CommandArgument 
Dim ContactId As Integer = GridView1.Rows(rowNumber).Cells(0).Text 
    Session("ContactID") = ContactId 
    Response.Redirect("~/ContactAddress.aspx") 
End Sub