问题:
我在for循环中添加了一些HtmlButtons。当我运行该应用程序并访问网页时,我按了其中一个按钮,它们不会触发事件,它们都消失了。是因为我正在使用循环创建它们吗?
我尝试过的事情:
当我使用普通按钮(WebControl)时,我得到的结果是相同的。
我试图将HtmlButton置于for循环之外,仅创建一个。这使得事件被触发并且按钮没有消失。问题是,我需要多个按钮。
for (int i = 0; i < 4; i++)
{
HtmlButton btn = new HtmlButton();
btn.ID = "btnDelWinkelWagen" + (i + 1).ToString();
btn.Attributes["Class"] = "btn btn-danger";
btn.Attributes["runat"] = "server";
btn.ServerClick+= new EventHandler(WinkelVerwijder);
btn.InnerText = "Verwijder";
placeHolderBtnDel.Controls.Add(btn);
}
<div class="col-sm-4" runat="server" id="DivKnop">
<h4>Verwijder items:</h4>
<asp:PlaceHolder ID="placeHolderBtnDel" runat="server"></asp:PlaceHolder>
</div>
我也尝试过制作1个EventHandler而不是4个新的EventHandler。 可悲的是,结果是一样的:按钮消失,没有事件触发。
EventHandler ev = new EventHandler(WinkelVerwijder);
for (int i = 0; i < test-1; i++)
{
HtmlButton btn = new HtmlButton();
btn.ID = "btnDelWinkelWagen" + (i + 1);
btn.Attributes["Class"] = "btn btn-danger";
btn.Attributes["runat"] = "server";
btn.ServerClick+= ev;
btn.InnerText = "Verwijder";
placeHolderBtnDel.Controls.Add(btn);
}
预期:
4个都触发相同事件的按钮。
调整:
protected void Page_Init(object sender, EventArgs e)
{
EventHandler ev = new EventHandler(WinkelVerwijder);
for (int i = 0; i < test - 1; i++)
{
HtmlButton btn = new HtmlButton();
btn.ID = "btnDelWinkelWagen" + (i + 1);
btn.Attributes["Class"] = "btn btn-danger";
btn.Attributes["runat"] = "server";
btn.ServerClick += ev;
btn.InnerText = "Verwijder";
placeHolderBtnDel.Controls.Add(btn);
}
}