2017-08-28 3 views
0

J'ai créé des CheckBoxs dynamiquement dans GridView mais l'événement CheckedChanged se déclenche lorsque je clique deux fois sur le bouton.Création dynamique CheckBoxs se déclenche à la place d'un second clic

Où est-ce que je me trompe?

protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e) 
{ 
    // check if it's not a header and footer 
    if (e.Row.RowType == DataControlRowType.Row) 
    { 
     CheckBox chk = new CheckBox(); 

     chk.AutoPostBack = true; 

     // add checked changed event to checkboxes 
     chk.CheckedChanged += new EventHandler(chk_CheckedChanged); 

     e.Row.Cells[1].Controls.Add(chk); // add checkbox to second column 
    } 
} 
+0

Est-ce que donner une valeur initiale au champ Vérifié change quelque chose? c'est-à-dire: chk.Checked = false; – lancew

Répondre

0

Vous devez utiliser le code ci-dessous dans les deux OnRowCreated et OnRowDataBound événements de GridView.

Ceci déclenchera le CheckedChanged uniquement en premier clic.

if (e.Row.RowType == DataControlRowType.DataRow) 
{ 
    CheckBox chk = e.Row.Cells[1].FindControl("chk") as CheckBox; 
    if (chk == null) 
    { 
     chk = new CheckBox(); 
     chk.ID = "CheckBox1"; 
     chk.AutoPostBack = true; 
     chk.CheckedChanged += new EventHandler(chk_CheckedChanged); 

     e.Row.Cells[1].Controls.Add(chk); 
    } 
}