2017-08-28 11 views
0

GridViewでCheckBoxを動的に作成しましたが、2回クリックするとCheckedChangedイベントが発生します。動的に作成されたチェックボックスは、最初に2回目のクリックで発生します。

どこが間違っていますか?

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

[チェック]フィールドに初期値が変更されるのは何ですか?すなわち: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); 
    } 
} 
関連する問題