Скрыть UpdatePanel во время UpdateProgress - PullRequest
1 голос
/ 24 марта 2010

Я ищу самый простой способ скрыть панель обновлений в ожидании ответа на отправку. Материал , как описано здесь - использование Ajax Control Toolkit и UpdatePanelAnimationExtender является излишним и вызывает некоторые проблемы, а именно:

  • Поскольку на странице есть несколько скрытых панелей, все перепутано и скрывает неправильные панели. Я понятия не имею, почему это происходит;
  • Я не могу найти способ указать, что только одна кнопка должна вызывать анимацию. Я указал в UpdatePanel, но кажется, что он игнорируется, и все элементы управления на панели запускают анимацию.

Простое решение javascript было бы идеальным. Проблема здесь в том, что ASP.NET любит генерировать странные идентификаторы для элементов управления во время выполнения. Какие-нибудь решения для этого?

Заранее спасибо.

Ответы [ 3 ]

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

Я бы предложил использовать jQuery. Это облегчит вам жизнь. Таким образом, чтобы обойти проблему «странного идентификатора», вы можете сделать такой jQuery:

$('#<%= someASPControl.ClientID %>').hide();

и показать:

$('#<%= someASPControl.ClientID %>').show();

Это использует jQuery для захвата элемента по id, и затем вы можете делать с ним все, что хотите. Уловка - это ".ClientID", который будет захватывать идентификатор, который отправляет .net.

0 голосов
/ 02 апреля 2013

Обработка событий PageRequestManager beginRequest и endRequest для управления видимостью UpdatePanel во время обратных передач:

    var prm = Sys.WebForms.PageRequestManager.getInstance();
    prm.add_beginRequest(
        function (sender, args) {
            $get("<%=someUpdatePanel.ClientID %>").style.display = "none";
        }
    );
    prm.add_endRequest(
        function (sender, args) {
            $get("<%=someUpdatePanel.ClientID %>").style.display = "";
        }
    );

Также добавьте DisplayAfter = "0" в связанный элемент управления UpdateProgress, чтобы предотвратить задержку между скрытием UpdatePanel и UpdateProgress, показывающим

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

Вы можете использовать теги кода на своей html-странице и использовать свойство ClientId элемента управления, чтобы выдавать идентификатор, генерируемый asp.net:

$('#<%= elementName.ClientID %>').hide();

РЕДАКТИРОВАТЬ: этот пример использует jQuery кстати

...