2017-08-28 152 views
0

我在GridView中动态创建了CheckBox,但CheckedChanged事件在点击两次时触发。动态创建的CheckBoxs在第二次点击时触发,而不是第一次

哪里错了?

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

是否给Checked字段一个初始值会改变什么?即:chk.Checked = false; – lancew

回答

0

您在GridView中的两个OnRowCreatedOnRowDataBound事件使用下面的代码。

这将仅在第一次点击时触发CheckedChanged

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); 
    } 
} 
相关问题