2

我想知道为什么事件没有触发以及如何找到哪个复选框控件触发了事件。

chkList1 = new CheckBox();
                            chkList1.Text = row["subj_nme"].ToString();
                            chkList1.ID = row["subjid"].ToString();
                            chkList1.Checked = true;
                            chkList1.Font.Name = "Verdana";
                            chkList1.Font.Size = 12;
                            chkList1.AutoPostBack = true;
                            chkList1.CheckedChanged += new EventHandler(CheckBox_CheckedChanged);
                            Panel1.Controls.Add(chkList1);

protected void CheckBox_CheckedChanged(object sender, EventArgs e)
            {
                Label1.Text = "Called";
            }
4

1 回答 1

2

如果事件没有触发,可能是由于以下两个原因之一:

  1. 控件在页面生命周期中重新创建得太晚。尝试在OnInit.
  2. 验证是防止回发。要解决此问题,您可以CausesValidation在所有 CheckBox 控件上设置为 false。

您可以使用参数找出哪个控件触发了事件sender

protected void CheckBox_CheckChanged(object sender, EventArgs e)
{
    //write the client id of the control that triggered the event
    Response.Write(((CheckBox)sender).ClientID);
}
于 2012-05-06T22:48:36.080 回答