Member 13432866 Ответов: 1

Метод не срабатывает в C#


- Привет! Я составляю список с динамически добавляемыми атрибутами, включая кнопку удаления для каждой строки в ASP.NET веб-приложение.
private void GenerateRow()
    {
        ctr += 1;
        TableRow row = new TableRow();

        TableCell cell = new TableCell();
        TableCell cell1 = new TableCell();

        Button removeButton = createDeleteButton();

        TextBox tb = new TextBox();

        tb.ID = "TextBoxRow_" + ctr;
        tb.Width = 80;

        removeButton.ID = "RemoveButton" + ctr;

        cell.Controls.Add(tb);
        cell1.Controls.Add(removeButton);

        row.Cells.Add(cell);
        row.Cells.Add(cell1);

        table.Rows.Add(row);
        Session["table"] = table;
        ViewState["ctr"] = ctr;
    }


Этот метод вызывает метод createDeleteButton() :

private Button createDeleteButton()
    {
        int rowToDelete = ctr;
        Button deleteBtn = new Button();
        deleteBtn.Text = "x";
        deleteBtn.Click += (s, e) => RemoveRow(rowToDelete);
        return deleteBtn;
    }


И этот метод * * должен * * вызывать RemoveRow(int specificRow), чего он не делает:
protected void RemoveRow(int specificRow)
    {
        TableRow rw = table.Rows[specificRow];
        table.Rows.Remove(rw);

        ctr--;

        Session["table"] = table;
        ViewState["ctr"] = ctr;

    }


Есть мысли?

Что я уже пробовал:

Я попытался исправить эту проблему с помощью функции page_load, которая заставила меня сделать несколько перерывов на кофе.

F-ES Sitecore

После повторного создания таблицы в page_load вы должны повторно прикрепить все события щелчка.

1 Ответов

Рейтинг:
2

OriginalGriff

Нет, это не вызывает метод - он добавляет его в список обработчиков событий для кнопки удаления, которая будет вызвана при нажатии кнопки.
Если кнопка не нажата, обработчик событий никогда не будет вызван.

Но... если ваша загрузка страницы не проверяет, является ли это обратной передачей, вы получите совершенно новый набор кнопок при нажатии на кнопку - и загрузка вызывается до того, как обработчик события click может быть обработан.


Member 13432866

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

Bryian Tan

Где вызывается этот метод GenerateRow ()?