Динамически генерируемый код события ASP.NET не работает - PullRequest
0 голосов
/ 01 июня 2018

Я пытаюсь исправить ошибку в веб-приложении, которое динамически создает кнопки с прикрепленными к ним событиями.Я имею дело с этой функцией man, которая вызывается из цикла for.Из исследования, которое я сделал, этот способ назначения события должен работать, но это не так.На самом деле при нажатии кнопка исчезает по какой-то причине.Правильно ли я назначаю динамические события или может быть что-то еще не так?Переменная «drivers» - это панель, внутри которой создается кнопка.

 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);
}

Спасибо за любую помощь.

1 Ответ

0 голосов
/ 01 июня 2018

Вы должны воссоздавать динамические элементы управления при каждой загрузке страницы до обработки событий, иначе у события не будет владельца.Это должно быть сделано в событии инициализации (обработчик события OnInit страницы) перед загрузкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...