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