如何修复“动态添加的按钮在单击后消失”

时间:2019-04-12 03:04:52

标签: c# html asp.net

问题:

我在for循环中添加了一些HtmlButtons。当我运行该应用程序并访问网页时,我按了其中一个按钮,它们不会触发事件,它们都消失了。是因为我正在使用循环创建它们吗?

我尝试过的事情:

  1. 当我使用普通按钮(WebControl)时,我得到的结果是相同的。

  2. 我试图将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);
     }
}

0 个答案:

没有答案