Erreur: Index était hors de portée. Doit être non négatif et inférieur à la taille de la collection. Nom du paramètre: index
J'obtiens l'erreur suivante quand je la détruire et de créer des datatable
RadioButton rdb2 = new RadioButton();
RadioButton rdb3 = new RadioButton();
rdb1 = (RadioButton)DataList1.Items[item.Id].FindControl("One");
rdb2 = (RadioButton)DataList1.Items[item.Id].FindControl("Three");
rdb3 = (RadioButton)DataList1.Items[item.Id].FindControl("Seven");
Ce que je fais est basée sur la sélection de l'utilisateur, je suis d'appeler les données de la base de données et le mettre dans un nouveau tableau de données que j'utilise comme DataScouce pour mon DataList.
S'il vous plaît aider moi comment faire pour résoudre cette erreur. J'ai vu le lien aussi pour la solution, mais il n'a pas aidé.
- Qu'est-ce que
item.Id
(sa valeur)? - Combien de
Item
votreDataList1
a? - Où avez-vous ce code dans le contexte de la destruction et de la création de la datatable ?
- DataList1 a dynamique des éléments, cela dépend du pas de. des éléments présents dans ma db.
- Je n'ai pas écrit le code pour la détruire et la création de la table de données. Ses comme remplaçant. Si datatable a obtenu des éléments et quand je clique sur un autre élément, alors il viendra vers la même page de l'appel de la db avec une nouvelle requête pour remplir le tableau de données à nouveau.
Vous devez vous connecter pour publier un commentaire.
Semble que vous essayez de faire référence à un élément dans
DataList.Items
qui n'existe pas à la positionItem.Id
.S'assurer que
DataList.Items
contient des éléments et queItem.Id
a une valeur valide (Et pas plus élevé que le nombre total d'éléments dansDataList.Items
)En supposant
item.Id
est un entier valide, vous pouvez vérifier pour voir siitem.Id
est plus petite que la collection:DataList1.Items
possède une taille. Vous êtes juste essayer pour accéder à un élément qui est hors de portée (Comme l'exemple que je vous ai montré). Essayez de mettre un point d'arrêt dans votre code et de vérifier combien d'élémentsDataList1.Items
a.DataList1.Items[item.Id]
peut être null, et aussiFindControl
peut retourner la valeur null, il vaut mieux utiliseras
pour le convertir en un autre type. il ne déclenche pas d'exception si ce n'est dans un type donné. mais vous devez vérifier que la valeur null avant de l'utiliser.Je vous suggère d'accéder aux éléments par Index plutôt que des Id.
comme
Cette erreur est provoquée lorsque vous avez activé la pagination dans la vue en Grille. Si vous souhaitez supprimer un enregistrement à partir de la grille, alors vous devez faire quelque chose comme cela.
int index = Convert.ToInt32(e.CommandArgument);
int i = indice % 20;
//Ici 20 est mon GridView la Taille de la Page.
GridViewRow ligne = gvMainGrid.Les lignes[i];
int id = Convert.ToInt32(gvMainGrid.DataKeys[i].Valeur);
nouveau GetData().DeleteRecord(id);
GridView1.DataSource = RefreshGrid();
GridView1.DataBind();
Espère que cela répond à la question.