2009-04-15 6 views
1

Le code suivant fonctionne très bien sur la page 1 de données à l'intérieur d'un contrôle Asp.net Gridview:Index hors erreur de plage lors de l'utilisation row.FindControl l'intérieur d'un événement RowCommand Asp.net Gridview avec Paging Activé

 If e.CommandName = "Void" Then 

     'Read the status of the ticket currently 
     Dim RowIndex As Integer = CInt(e.CommandArgument) 
     Dim row As GridViewRow = grdTradeTickets.Rows(RowIndex) 

     Dim lblTransactionID As Label = DirectCast(row.FindControl("lblTransactionID"), Label) 
     Dim lblTtStatus As Label = DirectCast(row.FindControl("lblTtStatus"), Label) 
     Dim lblTradeTicketID As Label = DirectCast(row.FindControl("lblTradeTicketID"), Label) 

     'If already void, show "Already Void" message to user. Else continue "Are you sure you want to void this Trade Ticket?" 
     If lblTtStatus.Text = "Void" Then 

      mdlPopupAlready.show() 

     Else 

      mdlPopup.Show() 
      lblTradeTicketIdToVoid.Text = lblTradeTicketID.Text 

     End If 

    End If 

Cependant Si l'utilisateur clique sur le bouton "Annuler" sur une page ultérieure, l'erreur suivante est levée:

"L'index était hors plage, doit être non négatif et inférieur à la taille de la collection.

Ce n'est pas comme si l'index était nul ou quelque chose comme ça. Il a une valeur. Pensées?

+0

Pouvez-vous poster le balisage de la grille? – Macros

Répondre

0

Essayez de remplacer les lignes:

Dim RowIndex As Integer = CInt(e.CommandArgument) 
Dim row As GridViewRow = grdTradeTickets.Rows(RowIndex) 

avec

Dim row As GridViewRow = DirectCast(DirectCast(e.CommandSource, Control).Parent.Parent, GridViewRow) 
0

je faisais face au même problème. Puis il s'est avéré être le problème avec la méthode SubString(). Ce que je faisais J'obtenais la sous-chaîne d'une chaîne en utilisant l'index. Comme

myString.SubString (3, 6); Et dans myString, je passais "abc" signifie que la chaîne de longueur était 3. Recherchez du code qui utilise la sous-chaîne ou la collection et essayez de le déboguer. Salutations :)