2015-04-18 6 views
0

Я использовал этот учебник по этой ссылке http://www.aspdotnet-suresh.com/2010/10/how-to-show-progressbar-during.html, чтобы сделать «индикатор выполнения», он работает хорошо, но у меня есть еще одна UpdatePanel на странице, и каждый раз, когда я нажимаю кнопку в этой UpdatePanel, «прогресс bar ".UpdateProgress and Loading bar

Я не хочу, чтобы индикатор выполнения отображался с каждой UpdatePanel на странице. Я написал AssociatedUpdatePanelID="pnlData", но все еще не работает. Как я могу это достичь?

Другой вопрос: если у меня есть две кнопки в UpdatePanel, связанные с UpdateProgress, и я хочу, чтобы только одна из этих кнопок отображала индикатор выполнения, а не оба из них?

ответ

0

Причина, почему индикатор отображается для каждой кнопки мыши и для каждой панели обновления является то, что обработчик обязан на страницу по запросу события:

Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler); 
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler); 

Так с каждым AJAX туда и обратно на сервер о прогрессе bar сначала отображается, а затем скрывается.

Чтобы изменить это поведение, я предлагаю выяснить источник запроса. Я думаю, что он будет доступен где-то в параметрах sender или argsBeginRequestHandler. Используйте инструменты разработчика F12 для отладки объектов. Затем просто добавьте дополнительное условие к popup.show();. Вы можете использовать этот (или аналогичный) подход для фильтрации кнопок и панелей обновлений, которые должны запускать индикатор выполнения.

Обычный подход заключается в том, чтобы показывать индикатор выполнения только для длительных операций. Таким образом, вы обернули popup.show(); в setTimeout во время события BeginRequest, и если произойдет событие EndRequest, то указанный таймаут вы сбросите таймаут с помощью clearTimeout.

0

U упомянул, что вы использовали AssociatedUpdatePanelID = "pnlData". Но вы установили UpdateMode = «Условный». Как это: -

<asp:UpdatePanel ID="up1" runat="server" UpdateMode="Conditional">

+0

Да я поставил его на "Условный" – user1947393