添加动态CheckBox句柄CheckedChanged事件ASP.NET

时间:2012-05-06 18:52:01

标签: c# asp.net

我想知道为什么事件没有解雇&如何找到触发事件的复选框控件。

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";
            }

1 个答案:

答案 0 :(得分:2)

如果事件没有解决,可能是出于以下两个原因之一:

  1. 在页面生命周期中,控件的重新创建时间太晚。尝试在OnInit
  2. 期间创建控件
  3. 验证是阻止回发。要解决此问题,您可以在所有CheckBox控件上将CausesValidation设置为false。
  4. 您可以使用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);
    }