ASP.NET 动态生成的事件代码未运行

我正在尝试修复 Web 应用程序中的一个错误,该应用程序动态创建带有附加事件的按钮。我正在处理这个从 for 循环内部调用的 man 函数。从研究中我已经完成了这种分配事件的方式应该有效,但事实并非如此。事实上,由于某种原因,点击按钮就会消失。我分配的动态事件是错误的还是有其他完全错误的地方?“驱动程序”变量是在其中创建按钮的面板。


 public void generateDriver(string name, string route, string id)

 {

    Debug.WriteLine("A driver has been created!");

    Literal driverLit = new Literal();

    driverLit.Text += "<div class='routeTitle'>";

    driverLit.Text += "<input type='text' id='hiddenID' text='" + id + "' hidden />";

    driverLit.Text += name + "<br>";

    driverLit.Text += route + "<br>";

    Button newButton = new Button();

    newButton.Text = "Remove";

    newButton.ID = id;

    newButton.Click += new EventHandler(RemoveDriver);

    newButton.CssClass = "btn btn-danger";

    drivers.Controls.Add(driverLit);

    drivers.Controls.Add(newButton);

    drivers.Controls.Add(new Literal

    {

        Text = "</div>"

    });

}

public void RemoveDriver(object sender, EventArgs e)

{

    Debug.WriteLine("An event has been triggered!");

    Button removeBtn = (Button)sender;

    string id = removeBtn.ID;       

    string querystring = Request.QueryString["id"].ToString();


    List<string> routes = querystring.Split('-').ToList();

    routes.Remove(id);


    string newQueryString = string.Join("-", routes);


    Response.Redirect("/Orders.aspx?id=" + newQueryString);

}

谢谢你的帮助。


慕尼黑的夜晚无繁华
浏览 178回答 1
1回答

噜噜哒

在处理事件之前,您必须在每次页面加载之前重新创建动态控件,否则事件将没有所有者。这应该在OnInitLoad 之前的 Initialization 事件(页面的事件处理程序)中完成。
打开App,查看更多内容
随时随地看视频慕课网APP