2017-08-21 2 views
1

J'essaie d'obtenir une étiquette à l'intérieur d'un répéteur dans une boucle « for », mais je continue à obtenir une erreur en disant:Comment obtenir Étiquette à l'intérieur répéteur non ItemDataBound

« Une exception de type ' System.ArgumentOutOfRangeException 'est survenu dans mscorlib.dll mais n'a pas été traité dans le code d'utilisateur

Informations supplémentaires: L'index était hors de portée Doit être non négatif et inférieur à la taille de la collection. "

Voici mon code:

for (var i = 0; i < dt.Rows.Count; i++) 
{ 
    Label AppAmmount = (Label)rpOffers.Items[i].FindControl("AppAmmount"); 
} 

Répondre

2

Vous Looping dt.Rows.Count mais vous accédez rpOffers.Items. Il semble que le DataTable contient plus de lignes que le répéteur.

Mais pourquoi pas un simple foreach?

foreach(RepeaterItem item in rpOffers.Items) 
{ 
    Label AppAmmount = (Label)item.FindControl("AppAmmount"); 
} 
1

Vous pouvez utiliser rpOffers.Items.Count au lieu de dt.Rows.Count.

for (var i = 0; i < rpOffers.Items.Count; i++) 
{ 
    Label AppAmmount = (Label)rpOffers.Items[i].FindControl("AppAmmount"); 
}