Asp.net 如何仅为foreach循环中的特定控件启动事件处理程序

Asp.net 如何仅为foreach循环中的特定控件启动事件处理程序,asp.net,checkbox,foreach,Asp.net,Checkbox,Foreach,你好,我在foreach循环中设置了一些复选框,并将它们添加到页面控件中!我还为它们分配了一个eventhandler,并将我自己的参数传递给它们 当checkedchanged事件触发复选框时,它会为我添加的所有复选框调用该事件处理程序,这可能是因为我为每个循环分配了内部的eventhandler,所以每当事件触发时,它都会为所有复选框触发!我希望它只被触发一次,即只针对其复选框已更改的复选框 请帮我解决这个问题 这些代码片段可能有助于您理解 CheckBox checkboxtemp; f

你好,我在foreach循环中设置了一些复选框,并将它们添加到页面控件中!我还为它们分配了一个eventhandler,并将我自己的参数传递给它们

当checkedchanged事件触发复选框时,它会为我添加的所有复选框调用该事件处理程序,这可能是因为我为每个循环分配了内部的eventhandler,所以每当事件触发时,它都会为所有复选框触发!我希望它只被触发一次,即只针对其复选框已更改的复选框

请帮我解决这个问题 这些代码片段可能有助于您理解

CheckBox checkboxtemp;

foreach (SPListItem item in list.Items)
        {
            checkboxtemp = new CheckBox();
            checkboxtemp.ID = "CheckBoxId" + item.ID;
            checkboxtemp.Text = item.Title;
            checkboxtemp.AutoPostBack = true;
            checkboxtemp.CheckedChanged += new EventHandler((sender, e) => checkboxtemp_CheckedChanged(sender, e, checkboxtemp.Text));
            Controls.Add(checkboxtemp);
        }
为每个复选框触发的事件处理程序如下

protected void checkboxtemp_CheckedChanged(object sender, EventArgs e, string fieldName)
    {
      Label1.Text = fieldName;
    }
无论选中哪个复选框。我总是在checkboxtemp\u CheckChanged事件处理程序中获取fieldName参数内的最后一个复选框文本值。i、 e当任何复选框状态发生更改时,foreach循环中的事件处理程序将为每个项调用。。 我知道我做错了什么,但我想不出来

请帮助

试试这个

删除

复选框checkboxtemp;
item.ID是否在所有项目上都是唯一的?是,每个项目的item.ID都是唯一的
foreach (SPListItem item in list.Items)
        {

            var checkboxtemp = new CheckBox();