Проблема с жизненным циклом страницы (asp.net) - PullRequest
0 голосов
/ 01 июля 2011

У меня есть событие на моей странице aspx.cs:

   public void deleteBtn_Click(object sender, CommandEventArgs e)
{

    UsefulStaticMethods.DeleteComment(int.Parse(e.CommandName));        
}

Я пытаюсь удалить комментарий со страницы. Удаление прошло успешно. Однако интерфейс веб-сайта не обновляется после того, как это событие произошло.

My Page Load отвечает за отрисовку всех комментариев на странице с помощью динамической кнопки (удалить комментарий).

Я знаю, что когда кнопка «Удалить» срабатывает, страница «Загрузка» запускается раньше… и это немного проблема… потому что загрузка страницы воссоздает интерфейс страницы, а deleteBtn_click удаляет комментарий, и я хочу обновить интерфейс сразу ... "Обновить" страницу без комментария, который был удален ..

Если я выполню функцию, чтобы снова нарисовать всю таблицу, она создаст еще один список комментариев вместе со списком комментариев, нарисованным на событии загрузки страницы. Я не могу не отказать в составлении списка комментариев на page_load, потому что мне нужно все, что воссоздано во время обратной передачи (включая динамически создаваемую кнопку). Не могу использовать! Ispostback

Вопрос в том, как мне этого добиться / преодолеть проблему?

Ответы [ 3 ]

2 голосов
/ 01 июля 2011

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

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

0 голосов
/ 01 июля 2011

Вам необходимо заново привязать управление. Предположим, ваша кнопка находится в сетке, а не в сетке. Если нет, то есть еще один способ. Поместите содержимое на панель «Обновление» и установите триггер на панели «Обновление» с кнопкой «Удалить» ТАК, когда нажата кнопка «Удалить», панель обновления вызывает обновление.

0 голосов
/ 01 июля 2011

Используйте список данных или серверный элемент управления ретранслятора, чтобы отобразить комментарии и затем снова связать серверный элемент управления после удаления. Используйте! Ispostback на Page_Load.

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