powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как сделать недоступным кнопку (Control)
10 сообщений из 10, страница 1 из 1
Как сделать недоступным кнопку (Control)
    #33927588
Daimond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как сделать недоступным кнопку на странице во время выполнения длительной операции? Чтобы пользователь многократно ее не жал. Спасибо.
...
Рейтинг: 0 / 0
Как сделать недоступным кнопку (Control)
    #33927638
Dade
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
После исполнения всего кода в обработчике события, простой код:
SapmleBtn.Enabled = false;
по-моему все:)
...
Рейтинг: 0 / 0
Как сделать недоступным кнопку (Control)
    #33927639
GhostBaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, Dmitriy Dubrovskiy, Вы писали:

DD>Как сделать недоступным кнопку на странице во время выполнения длительной операции? Чтобы пользователь многократно ее не жал. Спасибо.
Я бы сделал перед выполнением операции ее недоступной:


 Button someButton;
 
 public function SomeLongOperationDO()
 {
    someButton.Enabled = false;
   
    // Some code for long operation START
   /*long operation*/
   //Some code for long operation END
   
    someButton.Enabled = true;
 }
...
Рейтинг: 0 / 0
Как сделать недоступным кнопку (Control)
    #33927649
Фотография OreL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DaimondКак сделать недоступным кнопку на странице во время выполнения длительной операции? Чтобы пользователь многократно ее не жал. Спасибо.

Код: plaintext
Button.Enabled = False
...
Рейтинг: 0 / 0
Как сделать недоступным кнопку (Control)
    #33927696
Dronopotamus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, Dmitriy Dubrovskiy, Вы писали:

DD>Как сделать недоступным кнопку на странице во время выполнения длительной операции? Чтобы пользователь многократно ее не жал. Спасибо.

длительная операция выполняется на клиенте или на сервере асинхронно после постбека?
если первое — разворачивайте прозрачный див на весь экран :). Задизейблите эту кнопку — пользователь нажмет какую-то другую. Или ссылку.
если второе — то можно серверным кодом, как тут и написали уже 3 человека... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
...
Рейтинг: 0 / 0
Как сделать недоступным кнопку (Control)
    #33928001
gerss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GhostBasterЗдравствуйте, Dmitriy Dubrovskiy, Вы писали:

DD>Как сделать недоступным кнопку на странице во время выполнения длительной операции? Чтобы пользователь многократно ее не жал. Спасибо.
Я бы сделал перед выполнением операции ее недоступной:


 Button someButton;
 
 public function SomeLongOperationDO()
 {
    someButton.Enabled = false;
   
    // Some code for long operation START
   /*long operation*/
   //Some code for long operation END
   
    someButton.Enabled = true;
 }

Оно, конечно, хорошо, вот только кнопка задисейблена не будет - не произойдет рендеринга страницы до окончания длинной операции.
Я бы сделал так:
1. На кнопку вешается клиентское событие onClick, в котором кнопка делается недоступной. В конце ставится вызов __doPostBack('<имя кнопки>','')
2. В конце длительной обработки вообще ничего делать не придется - кнопка будет отрендерена как доступная.
То есть имеем:
1. Клиентский код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
<script>
  function disableButton()
  {
    document.getElementById('Button1').disabled = true;
    __doPostBack('Button1','');
  }
</script>

2. Серверный код:
Код: plaintext
1.
2.
3.
4.
5.
6.
private void Page_Load(object sender, System.EventArgs e)
{
  ...
  Button1.Attributes["OnClick"] = "disableButton()";
  ...
}

В событии нажатия кнопки - та самая длительная операция, которая должна выполниться (если она, конечно, серверная)
...
Рейтинг: 0 / 0
Как сделать недоступным кнопку (Control)
    #33928617
Daimond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, gerss, Вы писали:


G>Оно, конечно, хорошо, вот только кнопка задисейблена не будет — не произойдет рендеринга страницы до окончания длинной операции.

Совершенно верно.

G>Я бы сделал так:
G>1. На кнопку вешается клиентское событие onClick, в котором кнопка делается недоступной. В конце ставится вызов __doPostBack('<имя кнопки>','')
G>2. В конце длительной обработки вообще ничего делать не придется — кнопка будет отрендерена как доступная.
G>То есть имеем:
G>1. Клиентский код:

G><script>
G> function disableButton()
G> {
G> document.getElementById('Button1').disabled = true;
G> __doPostBack('Button1','');
G> }
G></script>

G>2. Серверный код:

G>private void Page_Load(object sender, System.EventArgs e)
G>{
G> ...
G> Button1.Attributes["OnClick"] = "disableButton()";
G> ...
G>}

На форме у меня лежит Wizard. Так вот именно его нужно задизаблить после того как пользователь на нем кнопочку "Next" нажал. На эту кнопку я никак "Button1.Attributes["OnClick"] = "disableButton()";" не повешу. А как можно обновить страницу из серверного кода? Есть какой-нть Refresh, что ли?
...
Рейтинг: 0 / 0
Как сделать недоступным кнопку (Control)
    #33928918
DD>На форме у меня лежит Wizard. Так вот именно его нужно задизаблить после того как пользователь на нем кнопочку "Next" нажал. На эту кнопку я никак "Button1.Attributes["OnClick"] = "disableButton()";" не повешу. А как можно обновить страницу из серверного кода? Есть какой-нть Refresh, что ли?

Если нельзя повесить onclick, можно кнопку скрыть. Добавить свою кнопку со своим onclick, который будет делать еще hideButton.Click();
...
Рейтинг: 0 / 0
Как сделать недоступным кнопку (Control)
    #33929994
Darkman_CV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, GhostBaster, Вы писали:
GB>
GB> Button someButton;
GB> public function SomeLongOperationDO()
GB> {
GB>    someButton.Enabled = false;  
GB>    // Some code for long operation START
GB>   /*long operation*/
GB>   //Some code for long operation END
   
GB>    someButton.Enabled = true;
GB> }
GB>

Это не поможет. Всё, что вы написали будет обработано только во время PostBack'a.
В итоге мы получаем, что вы кнопку включаете (кладётся false во ViewState), после чего включаете (кладётся true) во ViewState — у клиента вообще при этом ни чего не происходит.

Для таких целей можно использовать:
1. Atlas Framework (UpdatePanel with partial rendering) + Custom Behaviour (вот точно не скажу, кажется уже есть готовый).
Он-то и выключит кнопку.
2. JavaScript тут вы сами выключаете, а когда страница вернётся после Postback'a — она будет иметь то состояние, что вы выставили ей на сервере.
3. JavaScript & Ajax (тут уж всё зависит от задачи)
...
Рейтинг: 0 / 0
Как сделать недоступным кнопку (Control)
    #33929995
Darkman_CV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообщем тут с визардами не всё так просто, как казалось бы.
В последствии вы захотите ещё и валидацию проводить, придерживаясь рекомендаций по разработке UI.

Один из них — это не включать кнопку, до тех пор пока всё не будет валидно
(пример: регистрация Yandex.Mail)

Мы для этих целей использовали целый набор всего что можно было найти, что бы получить подобный эфект именно в Wizard'e. Atlas Behaviors & Atlas Validators и много других извращений на тему.

В вашем же случае, я рекомендовал бы описать CustomNavigationTemplate и вот там уже и назначить OnClientClick
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как сделать недоступным кнопку (Control)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]