#jquery #asp.net #ajax #visual-studio
#jquery #asp.net #ajax #visual-studio
Вопрос:
У меня есть элемент управления UpdateProgress, который отображается в виде наложения (с использованием CSS) для всех асинхронных событий для панели обновления. Теперь, для определенных событий команды РАЗВЕРНУТЬ / СВЕРНУТЬ строку, я просто не хочу показывать этот updateprogress.
Есть ли способ?
Комментарии:
1. Не видя никакого вашего кода, похоже, вы должны иметь возможность привязать обработчик события к любому событию, вызывающему развертывание / сворачивание. Это событие щелчка? Опубликуйте свой код, пожалуйста.
2. События все в порядке с привязкой, это просто наложение UpdateProgress, которое я не хочу показывать для определенных событий RowCommand для gridview, содержащихся в этой updatepanel
3. 1.) По возможности используйте более одной панели обновления. Элемент управления UpdateProgress имеет свойство
AssociatedUpdatePanelID
. Задайте идентификатор панели обновления, для которой UpdateProgress отображает статус, и не используйте UpdateProgress-control для панели обновления команд row. 2.) Поиграйте соDisplayAfter
свойством, которое указывает, когда будет отображаться UpdateProgress. Возможно, этого уже достаточно. 3.) Запустите UpdateProgress самостоятельно, взгляните на эту ссылку , чтобы ознакомиться с методами.
Ответ №1:
<script type="text/javascript">
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_initializeRequest(InitializeRequest);
function InitializeRequest(sender, args) {
var updateProgress = $get('UpdateProgress1');
var postBackElement = args.get_postBackElement();
if (postBackElement.id == '<%= Button1.ClientID %>') {
updateProgress.control._associatedUpdatePanelId = 'dummyId';
}
else{
updateProgress.control._associatedUpdatePanelId = null;
}
}
</script>
Комментарии:
1. Превосходно. Хорошо понято и правильный ответ по существу. Спасибо
2. Это работает, как только я настроился на UpdateProgress[0].control._associatedUpdatePanelId
Ответ №2:
Я обнаружил, что это работает для меня, где ответ.Перенаправление предотвращает перезагрузку исходной страницы, и поэтому UpdateProgress не отключается..
В некорректном элементе управления добавить
OnClientClick="disableProgress()"
а затем поместите этот javascript на страницу
<script type="text/javascript">
function disableProgress() {
var updateProgress = $get('<%=UpdateProgress1.ClientID%>');
var originalID = updateProgress.control._associatedUpdatePanelId;
updateProgress.control._associatedUpdatePanelId = 'dummyId';
setTimeout(function () { updateProgress.control._associatedUpdatePanelId = originalID; }, 1000);
}
</script>
Это временно отключает элемент управления UpdateProgress, а затем асинхронно повторно активирует его на стороне клиента через 1 секунду.