Отключить динамическое нажатие кнопки asp.net во время обратной передачи и включить его впоследствии - PullRequest
5 голосов
/ 28 января 2010

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

Спасибо.

Ответы [ 3 ]

4 голосов
/ 28 января 2010

onclick = "this.enabled = false" добавьте это из своего кода в свой контроль

btnAdd.Attributes.Add ("onclick", "this.enabled = false;");

Эта ссылка подробно объясняет http://encosia.com/2007/04/17/disable-a-button-control-during-postback/

2 голосов
/ 28 января 2010

Если вы обрабатываете через ajax при нажатии кнопки 1. Отключите кнопку, когда начинается обработка 2. Включите кнопку после завершения обработки

Если кнопка выполняет обратную передачу, лучший способ - отключить кнопку при нажатии на нее через javascript [я не буду предлагать jquery только для этой конкретной задачи]. Поскольку после обратной передачи кнопка будет активирована, как и раньше, вам не нужно беспокоиться о включении.

    <asp:Button ID="btn" runat="server" OnClientClick="disable(this)"
Text="Click me!" OnClick="btn_Click" />

 <script type="text/javascript">
        function disable(control)
        {
            control.disabled="disabled";
            //added alert to give the snapshot of what happens
            //when the button is clicked
            alert(100);
        }
 </script>

Надеюсь, это поможет.

0 голосов
/ 28 января 2010

Я бы использовал UpdatePanel вокруг кнопки. По нажатию вы можете отключить кнопку на сервере. Используйте триггер на панели обновления, который просматривает каждые x секунд, если ваш внешний процесс вернул результат. И я бы посоветовал вам отправлять долго работающие процессы в службу Windows.

...