L'indice est hors de la plage d'erreur dans le contrôle Gridview

- Je ajouter toutes les lignes CheckBox dans mon Gridview aider avec cette article.

Voici mon Calculate Button code;

protected void Calculate_Click(object sender, EventArgs e)
    {
        bool atLeastOneRowDeleted = false; 

        foreach (GridViewRow row in GridView1.Rows) 
        { 
            CheckBox cb = (CheckBox)row.FindControl("ProductSelector"); 
            if (cb != null && cb.Checked)
            { 
                atLeastOneRowDeleted = true; 
                int productID = Convert.ToInt32(GridView1.DataKeys[row.RowIndex].Value); 
                Response.Write(string.Format( "This would have deleted ProductID {0}<br />", productID));
            }
        }

    }

Mais quand je fais ça, l'obtention d'erreur étrange comme cela;

L'indice est hors de la plage d'erreur dans le contrôle Gridview

Comment puis-je résoudre ce problème?

Cordialement, Soner

Avez-vous regarder le DataKeys collection avec le débogueur?
Sont Case est devrait être une source d'erreur?
Qu'est-ce exactement que vous essayez d'atteindre avec le code ci-dessus?
Je veux juste écrire la ligne sélectionnée dans le contrôle Gridview avec ce code. Réponse.Write(string.Format( "Cela aurait supprimé ProductID {0}<br />", productID));
Pouvez-vous mettre à jour votre question avec votre GV de balisage et de la source de données de détails.

OriginalL'auteur Soner Gönül | 2011-03-21