动态创建使用公共处理程序的多个控件

时间:2011-11-04 21:19:32

标签: c# asp.net events event-handling

这第一部分是循环的。它创建了没有问题的动态复选框。

// 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错误'

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

1 个答案:

答案 0 :(得分:3)

您需要在事件处理程序中检查发件人,以了解发送事件的复选框:

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