Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как сделать недоступным кнопку (Control) / 10 сообщений из 10, страница 1 из 1
18.08.2006, 12:21
    #33927588
Daimond
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать недоступным кнопку (Control)
Как сделать недоступным кнопку на странице во время выполнения длительной операции? Чтобы пользователь многократно ее не жал. Спасибо.
...
Рейтинг: 0 / 0
18.08.2006, 12:29
    #33927638
Dade
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать недоступным кнопку (Control)
После исполнения всего кода в обработчике события, простой код:
SapmleBtn.Enabled = false;
по-моему все:)
...
Рейтинг: 0 / 0
18.08.2006, 12:29
    #33927639
GhostBaster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать недоступным кнопку (Control)
Здравствуйте, 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
18.08.2006, 12:31
    #33927649
OreL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать недоступным кнопку (Control)
DaimondКак сделать недоступным кнопку на странице во время выполнения длительной операции? Чтобы пользователь многократно ее не жал. Спасибо.

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

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

длительная операция выполняется на клиенте или на сервере асинхронно после постбека?
если первое — разворачивайте прозрачный див на весь экран :). Задизейблите эту кнопку — пользователь нажмет какую-то другую. Или ссылку.
если второе — то можно серверным кодом, как тут и написали уже 3 человека... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
...
Рейтинг: 0 / 0
18.08.2006, 13:27
    #33928001
gerss
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать недоступным кнопку (Control)
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
18.08.2006, 15:23
    #33928617
Daimond
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать недоступным кнопку (Control)
Здравствуйте, 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
18.08.2006, 16:26
    #33928918
Как сделать недоступным кнопку (Control)
DD>На форме у меня лежит Wizard. Так вот именно его нужно задизаблить после того как пользователь на нем кнопочку "Next" нажал. На эту кнопку я никак "Button1.Attributes["OnClick"] = "disableButton()";" не повешу. А как можно обновить страницу из серверного кода? Есть какой-нть Refresh, что ли?

Если нельзя повесить onclick, можно кнопку скрыть. Добавить свою кнопку со своим onclick, который будет делать еще hideButton.Click();
...
Рейтинг: 0 / 0
19.08.2006, 06:38
    #33929994
Darkman_CV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать недоступным кнопку (Control)
Здравствуйте, 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
19.08.2006, 06:43
    #33929995
Darkman_CV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать недоступным кнопку (Control)
Вообщем тут с визардами не всё так просто, как казалось бы.
В последствии вы захотите ещё и валидацию проводить, придерживаясь рекомендаций по разработке UI.

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

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

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


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