UpdateProgress с UpdatePanel не отображается в пользовательском элементе управления при загрузке страницы - PullRequest
0 голосов
/ 12 февраля 2009

Это типичное поведение UpdateProgress для ASP.Net UpdatePanel? У меня есть панель обновления с элементом управления UpdateProgress внутри окна пользовательского элемента управления на странице.

Если я затем заставлю страницу в фоновом режиме выполнить некоторую загрузку и нажму кнопку на панели обновления пользовательского элемента управления, UpdateProgress вообще не будет отображаться. Это похоже на то, что запрос на обновление UpdatePanels даже не регистрируется до тех пор, пока настоящая страница не будет сделана. Стоит отметить, что он появится, если на заднем плане ничего не происходит.

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

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

Может быть, так оно и есть?

Редактировать: Так что я немного поясню, что я делаю.

То, что происходит, у меня есть страница, и все, что у нее есть, это некоторые инструменты на стороне и большая карта. Когда страница изначально загружается, загрузка карты занимает некоторое время. Теперь, если во время загрузки я открываю инструмент (пользовательский элемент управления), в котором находится соответствующая панель обновления, и нажимаю кнопку на этом пользовательском элементе управления, которая должна обновить панель обновления новыми данными и показать знак загрузки (в updateprogress. ) затем изображение загрузки UpdateProgress не отображается. Однако код, запускаемый нажатием кнопки, запускается после завершения загрузки страницы (как и ожидалось), и UpdateProgress будет отображаться, если ничего на странице, содержащей пользовательский элемент управления, не загружается.

Я просто хочу, чтобы загрузчик отображался во время загрузки страницы.

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

Ответы [ 2 ]

1 голос
/ 29 марта 2012

Я верю Я понимаю вашу проблему после прочтения вашего ОП несколько раз. Я сам столкнулся с этой ситуацией, с трудом заставляя UpdateProgress работать над Page_Load. Решение? Не запускайте серверное событие изначально в Page_Load. Добавьте таймер AJAX, который находится внутри UpdatePanel, как показано ниже:

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
  <ContentTemplate>
     <asp:Timer ID="ajxTmr1" runat="server" Interval="1000" OnTick="ajxTmr1_Tick" />
  </ContentTemplate>
</asp:UpdatePanel>

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

<asp:UpdateProgress ID="UpdateProgress1"  runat="server" DisplayAfter="0"  AssociatedUpdatePanelID="UpdatePanel1" Visible="false">
    <%--Panel or whatever goes here--%>
</asp:UpdateProgress>
1 голос
/ 12 февраля 2009

Я не совсем точно следую за тем, что вы здесь делаете, но я предполагаю, что вы взяли то, что находится под вашим пользовательским контролем, и убедились, что оно работает правильно, если размещено прямо на странице?

В качестве дополнительного примечания я лично вырываю UpdatePanels и заменяю их заменами jQuery из-за значительной экономии производительности, а также из-за того, что это намного эффективнее по времени для определения jQuery et al. причуды вместо причуд ASP.NET AJAX. Если честно, я бы хотел вернуть себе время, потраченное на UpdatePanels / ASP.NET AJAX.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...