[英]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.