Отключите кнопку asp по нажатию той же кнопки, пока процесс не закончится - PullRequest
1 голос
/ 25 марта 2010

Мне нужна помощь в следующем сценарии: При нажатии кнопки СОХРАНИТЬ на странице aspx произойдет некоторая обработка. Обработка может длиться 10-15 минут. Я хочу отключить кнопку SAVE до тех пор, пока процесс не завершится и после завершения процесса кнопка SAVE должна быть активирована. Я попробовал следующее, но не смог решить проблему: 1) Сценарии на стороне клиента: Я вызвал Java-скрипт на клиентском клике кнопки и установил для свойства disable значение true. Однако событие saveButton_Click на стороне сервера не вызывается из-за отключения кнопки на стороне клиента. 2) Отключение в методе saveButton_Click на стороне сервера: В этом случае, поскольку вызов saveButton_Click уже произошел, а запрошенный отправляется на сервер, клиентская сторона остается без изменений, пока запрос не будет обработан.

Пожалуйста, помогите мне в этом как можно скорее. Очень СРОЧНО.

Спасибо Рупа

Ответы [ 6 ]

0 голосов
/ 15 февраля 2018

Установите OnClientClick и UseSubmitBehavior в разметке вашей кнопки

 OnClientClick="this.disabled = true; this.value = 'Submitting...';" UseSubmitBehavior="false"
0 голосов
/ 16 мая 2012

Вы можете обработать это просто с помощью этого кода. Предположим, что здесь есть кнопка с именем btnAdd. Когда вы нажимаете эту кнопку, она будет отключена из-за выполнения соответствующего кода. *

if (!IsPostBack)
    {
     btnAdd.Attributes.Add("onclick", "this.disabled=true;" + GetPostBackEventReference(btnAdd).ToString());
    }
0 голосов
/ 29 сентября 2011

Не отключайте кнопку. Как вы сказали, он не сработает на стороне сервера. Кроме того, вы можете скрыть кнопку и показать правильное сообщение (например, «обработка ..», «работа ..»). Это даст хороший интерфейс. И вы дадите эффект отключения кнопки при обратной передаче и включения кнопки после обратной передачи .

0 голосов
/ 25 марта 2010

Вы можете использовать фиктивную кнопку отправки:

<%@ Page Language="C#" AutoEventWireup="true" %>
<script type="text/C#" runat="server">
    protected void BtnClick(object sender, EventArgs e)
    {
        System.Threading.Thread.Sleep(2000);
        result.Text = DateTime.Now.ToLongTimeString();
    }
</script>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <button type="button" onclick="this.disabled='disabled';document.getElementById('<%= btn.ClientID %>').click();">Start processing</button>
    <asp:Button ID="btn" runat="server" OnClick="BtnClick" style="display:none;" />
    <asp:Label ID="result" runat="server" />
    </form>
</body>
</html>
0 голосов
/ 25 марта 2010

Используйте System.Threading.Thread.Sleep(5000) при нажатии кнопки и отключите ее ...

Для ref Отключить кнопку отправки

0 голосов
/ 25 марта 2010

Вы сказали: «1) Сценарии на стороне клиента: я вызвал java-скрипт на клиентском клике кнопки и установил для свойства disable значение true. Однако событие saveButton_Click на стороне сервера не вызывается из-за отключения кнопки на стороне клиента. " и это означает, что кнопка теперь отключена, и вызов на стороне сервера не будет обрабатываться, пока вы не повторно включите кнопку. Так это не соответствует вашему требованию?

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