[英]Checkbox fires more than one event
我有一个动态选项卡,其中有复选框。 我在他们身上放了一个事件onCheckedChanged
。 它第一次起作用,但是回发后,重新创建了我的选项卡,当我单击另一个复选框时,触发了多个事件。
这是创建标签的代码:
private void initCatalog()
{
foreach (Article art in listArticle)
{
TableRow ligne = new TableRow();
ligne.Width = Unit.Percentage(100);
TableCell celluleITMREF = new TableCell();
celluleITMREF.Width = Unit.Percentage(10);
celluleITMREF.Text = art._ITMREF;
TableCell celluleCBOX = new TableCell();
celluleCBOX.Width = Unit.Percentage(8);
CheckBox cbox = new CheckBox();
cbox.ID = "cbox." + f._FOURNISSEUR + "." + art._ITMREF;
cbox.Checked = hfArticlesPaniers.Value.Contains(cbox.ID);
//cbox.Enabled = !(hfArticlesPaniers.Value.Contains(cbox.ID));
cbox.CheckedChanged += new EventHandler(cbox_CheckedChanged);
cbox.AutoPostBack = true;
cbox.CssClass = "c";
celluleCBOX.Controls.Add(cbox);
ligne.Cells.Add(celluleITMREF);
ligne.Cells.Add(celluleCBOX);
tabArticle.Rows.Add(ligne);
}
}
这是复选框的事件:
protected void cbox_CheckedChanged(object sender, EventArgs e)
{
CheckBox c = sender as CheckBox;
Response.Write("<script>alert(\"" + c.ID + "\");</script>");
}
这是page_Load事件:
protected void page_Load(object sender, EventArgs e){
this.initCatalog();
}
谢谢你的帮助 :)
的每次迭代art
在listArticle
将导致事件处理程序由线被添加到事件
cbox.CheckedChanged += new EventHandler(cbox_CheckedChanged);
每次执行。 (即您要多次添加处理程序)
另外,如果未破坏页面并在其间再次加载,则每次运行initCatalog
也会导致此情况。
将以上行移动到页面加载后仅执行一次的位置。
编辑
在重新读取代码时,由于有多个复选框,因此可能希望在循环中添加多次。 但是在回发之后,可以再次执行initCatalog()
,从而再次添加事件吗?
我发现了错误。 我有一种方法可以在创建她后对列表进行排序...我删除了该方法,它可以正常工作。
我不知道为什么会出错...
private void orderCatalog()
{
var tab = from TableRow tr in tabArticle.Rows
orderby tr.Cells[1].Text
select tr;
List<TableRow> l = new List<TableRow>();
foreach (TableRow tr in tab)
{
l.Add(tr);
}
tabArticle.Rows.Clear();
foreach (TableRow tr in l)
{
tabArticle.Rows.Add(tr);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.