Обработчик событий не срабатывает после удаления кнопки C # - PullRequest
2 голосов
/ 21 марта 2012

У меня есть таблица с данными из базы данных SQL, и таблица существует из нескольких строк и столбцов. Пользователь должен сначала предоставить учетные данные, прежде чем будет показана таблица с данными, поэтому я создаю таблицу (и ее содержимое) динамически.

В каждой строке таблицы я добавляю ячейку с кнопкой «удалить»:

   // more code to create the table above
   Button remove = new Button();
   remove.Text = "Remove";
   remove.Click += new EventHandler(remove_Click);

   TableCell last = new TableCell();
   last.Controls.Add(remove);

   row.Cells.Add(last);
   //...

Когда пользователь нажимает кнопку, я хочу удалить соответствующую запись в базе данных и обновить таблицу после обратной передачи.

Код для этого написан в remove_Click, но событие никогда не запускается, просто потому, что кнопка удаления больше не существует после обратной передачи и, следовательно, событие кнопки не может быть запущено. Как объяснено здесь: Динамически добавленный обработчик событий не запускается

Код работает нормально, если я не удаляю кнопку, но как мне запустить событие и все еще хотеть удалить кнопку?

Ответы [ 2 ]

1 голос
/ 21 марта 2012

Вызывайте любую функцию, которая строит вашу таблицу СНОВА в обработчике событий remove_Click.Так как запись не существует в базе данных после срабатывания кнопки удаления, во второй раз, когда вызывается BuildTable(), эта запись не будет включена при построении таблицы.как:

...
<asp:PlaceHolder id="phTable" runat="server">
...

Попробуйте что-то вроде этого:

    PageLoad(...)
    {
        BuildTable();
    }
    BuildTable()
    {
        phTable.Controls.Clear();
        Table T = new Table();
         //do stuff
        phTable.Controls.Add(T);


    }
    protected void remove_Click(object sender, EventArgs e)
    {
        //remove record from database
        BuildTable();

    }
1 голос
/ 21 марта 2012

Вы должны присвоить уникальный идентификатор вашему Button элементу управления.

...