第一部分是一个循环。它创建动态复选框没有问题。
// All I am doing here is incrementing our session counter
int id = Convert.ToInt32(Session["id"]);
id++;
Session["id"] = id;
// Now I create my checkbox
chkDynamic = new CheckBox();
chkDynamic.Text = "hey";
string chk = "chk" + id.ToString();
chkDynamic.ID = chk;
chkDynamic.CheckedChanged += new EventHandler(this.chkDynamic_CheckedChanged);
Panel1.Controls.Add(chkDynamic);
我的事件处理程序没有为此连接。奇怪的是,如果我硬编码ID它确实有效,但只适用于循环的一次迭代因为如果我们硬编码ID那么我们会遇到'多个ID错误'
protected void chkDynamic_CheckedChanged(object sender, EventArgs e)
{
if (chkDynamic.Checked)
Response.Write( "you checked the checkbox");
else if (!chkDynamic.Checked)
Response.Write("checkbox is not checked");
}
您需要在事件处理程序中检查sender,以了解哪个复选框发送了事件:
protected void chkDynamic_CheckedChanged(object sender, EventArgs e)
{
if (((CheckBox)sender).Checked)
Response.Write( "you checked the checkbox");
else
Response.Write("checkbox is not checked");
}