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;
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.
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
Vous devez vous connecter pour publier un commentaire.
Assurez-vous d'avoir DataKeys définis dans votre GridView définition
Aussi essayer d'ajouter une case pour DataRow comme ce
découvrez mon montage! Vous pouvez poster votre balisage pour Gridview ?
Mais je n'ai pas de colonne productID. Ceci est juste l'une des Cases à cocher de la colonne. Donc, quand j'écris ce <asp:gridview id="GridView2" datakeynames="productID"... j'obtiens une erreur de liaison de données: 'Système.Les données.DataRowView' ne contient pas une propriété avec le nom "productID'.
essayez
MUS_K_ISIM
pour datakeysnames au lieu de productIDJ'ai juste deux colonne "MUS_K_ISIM" et les Cases à cocher de la colonne. i.imgur.com/ArKi9.png
OriginalL'auteur Bala R
Il pourrait être lié à la façon dont vous êtes le remplissage de votre gridview, ou la façon dont vous êtes le réglage de votre GridView pour stocker les DataKeys, pourriez-vous poster les deux codes, où vous définissez votre GridView composant sur votre .page aspx (le code html) et où vous renseigner?
EDIT:
J'ai essayé votre exemple, et la seule diferrence, c'est que je l'acquisition d'une source de données à partir d'une Liste intead d'un contrôle de source de données, fonctionne parfaitement ici, et je Ctrl+c/Ctrl+v de votre code, afin de prendre un coup d'oeil;
public class MyClass
{
public int productId { get; set; }
public string MUS_K_ISIM { get; set; }
}
pour que cette approche fonctionne, vous devez avoir une propriété contenant votre productId, tout comme l'exemple ci-dessus, où je définir un int prop pour le représenter à MyClass. Sinon, vous devez le créer ou de trouver un autre terrain pour unique identifier votre objet.
OriginalL'auteur Renato Gama