2008-10-22 11 views
1

Cette erreur s'affiche chaque fois que je clique sur la grille de données.Erreur VB.NET: l'index était en dehors des limites du tableau

Le programme remplit la grille de données chaque fois que des données ont été sélectionnées dans la liste déroulante. Par exemple, je choisis data1 qui a quatre enregistrements dans datagrid, puis je clique sur l'index de ligne n ° 1. Pas de problème, il sera montré, mais quand je choisis une autre donnée dans la combobox, par exemple, Data 2 a un seul enregistrement, puis je vais cliquer à nouveau sur le DataGrid.

C'est l'heure à laquelle l'erreur apparaîtra.

S'il vous plaît voir le code sur la façon dont je remplir la grille de données:

Sub FillDtgPir(ByVal qry As String) 
    Try 
     If SQLConn1.State = ConnectionState.Closed Then SQLConn1.Open() 
     Dim adap As New SqlDataAdapter(qry, SQLConn1) 
     Me.DtsLineReq1.PRRMS_PIR.Clear() 
     adap.Fill(Me.DtsLineReq1, "PRRMS_PIR") 
    Catch ex As Exception 
     MsgBox(ex.Message) 
    End Try 
End Sub 

Est-il manque quelque chose dans le code?

Répondre

1

Si l'index de ligne sélectionné est plus grand que l'index le plus grand (nombre de lignes moins un) dans les nouvelles données, diminuez l'indice de ligne si nécessaire avant d'effectuer le remplissage? Ou vérifiez la raison de l'exception et diminuez l'index des lignes au lieu d'afficher le message d'erreur?

0

Lors de la recharge de la grille de données - assurez-vous de réinitialiser la ligne sélectionnée (ce que j'attendrais de la part de Clear()).

Un index en dehors des limites du tableau est généralement provoqué en essayant de voir une ligne qui n'est plus là. Avez-vous un pointeur sur la ligne actuelle dans le DataGrid n'importe où?

Y a-t-il des événements dans l'événement clickagrid click?

Questions connexes