2010-01-22 2 views
1

J'ai un GridView qui a des champs liés et un champ de modèle pour la case à cocher. J'ai écrit un code pour la suppression des enregistrements en cochant les cases. Mon problème estAsp.net CheckBox dans GridView perd sa valeur

HtmlInputCheckBox chk; 
foreach(GridViewRow dr in dgvdetails.Rows) 
{ 
    chk = (HtmlInputCheckBox)dr.FindControl("ch"); 
    chk.Checked = true; 
    if (chk.Checked)///  **here checkbox is not checked even if I'm check it** 
    { 
     pl.id = int.Parse(chk.Value); 
     bl.deletedgvdetails(pl); 
    } 
} 

Répondre

0

Il y a deux choses qui me viennent à l'esprit ici. Je ne sais pas quand votre code est en cours d'exécution - en ce qui concerne le cycle de vie de la page - mais si vous le manipulez dans un événement de clic de bouton, assurez-vous que votre vue de grille n'a pas été rebondie. comme Page_Load qui s'exécute avant le déclenchement des événements de clic sur le bouton. Si c'est le cas, toutes vos cases à cocher auront été réinitialisées avant l'exécution de votre méthode de suppression. Deuxièmement, à l'intérieur de votre boucle foreach, vous pouvez faire attention au RowType de la ligne en cours. La première itération à travers la boucle peut se concentrer sur la ligne d'en-tête (si vous l'avez activé pour GridView) et ne peut donc pas avoir la case à cocher.

Vérifier que if (chk! = Null) {} est toujours une bonne idée si vous utilisez e.Row.FindControl() - juste au cas où.