2011-01-19 3 views
0

Я работаю в ASP .Net. Мне нужно, чтобы у вас была возможность щелкнуть по кнопке, отключить ее, включить код и выполнить некоторые функции, и как только они будут выполнены, снова включите кнопку. В этом проекте нет обратной передачи для каждого объявления, поскольку мы используем UpdatePanel. О, насколько я был в состоянии получить успешно использует этот синтаксис, чтобы отключить его в коде позади функции Page_Load:кнопки отключения/включения

btnConnect.Attributes.Add("onClick", "document.body.style.cursor = 'wait';this.disabled = true;" + ClientScript.GetPostBackEventReference(btnConnect, string.Empty) + ";"); 

Это отключает кнопку и позволяет коду за выполнение. Я просто не могу понять, как снова включить кнопку, когда выполняются функции, выполняемые в коде. Есть ли способ захвата, когда код позади?

+0

Является ли кнопка внутри UpdatePanel? Затем он должен быть перезаписан, когда возвращается асинхронная обратная связь. (Это просто предположение, поэтому я пишу это как комментарий вместо ответа.) – Heinzi

ответ

0

Вы можете использовать подход тайма-аут после Disable:

var that = this; //pointer to button 
window.setTimeout(function() { document.body.style.cursor = '';that.disabled = false; }, 1000); 

Этого подход может быть полезен для предотвращения двойного постбэка тоже.

Или панель обновления завершает запуск Sys.WebForms.PageRequestManager.endRequest. Добавьте обработчик событий, чтобы снова включить кнопку в качестве другой альтернативы.

1

Вы можете использовать jQuery вместо этого? Рассмотрим поток, как это:

  • на щелчок, кнопку отключения
  • вызов/POST к URL ASP.NET по мере необходимости
  • повторно включить кнопку при возврате URL вызова. Обновление элементов страницы, перенаправление, оповещение по мере необходимости.
0

В дополнение к вышесказанному ...

Да, вы используете UpdatePanel, но PostBack происходит.

Итак, в событии отправки сообщения, после успешной обработки, удалите атрибут onClick, добавленный выше, попытались ли вы включить кнопку в коде позади и затем выпустить Update() на UpdatePanel?

Смежные вопросы