AJAX.NET __doPostBack меняет другой контент - PullRequest
1 голос
/ 26 мая 2010

У меня есть приложение, в котором javascript читает местоположение GPS устройства и отправляет его на серверный скрипт следующим образом:

f()
{
  var initialLocation= Someshit();
  document.getElementById('<% = text.ClientID %>').value=initialLocation;
  var button = document.getElementById('<% = Button4.ClientID %>');
  button.click();
}

И у меня есть код AJAX.NET:

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
       <asp:Button ID="Button4" runat="server" Text="PlaceHolder" onclick="Button4_Click"/>
       <asp:TextBox ID="text" runat="server"></asp:TextBox>
    </ContentTemplate>
</asp:UpdatePanel>

И немного дальше вниз

<asp:UpdatePanel ID="UpdatePanel2" runat="server">
   <ContentTemplate>
      <div>
          <some divs and asp:gridviews and god knows what >
      </div>
    <ContentTemplate>
</asp:UpdatePanel>

Проблема в том, что последнее внутреннее содержимое div'ов изменяется, когда событие UpdatePanel1 завершено. Это почему? Я не хочу, чтобы содержимое вне UpdatePanel1 изменялось всякий раз, когда UpdatePanel1 делает свое дело. Пожалуйста, помогите.

1 Ответ

1 голос
/ 26 мая 2010

Значение по умолчанию UpdateMode равно Always, в этом случае вы хотите Conditional, например:

<asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional">
   <ContentTemplate>
      <div>
          Yadda yadda
      </div>
    <ContentTemplate>
</asp:UpdatePanel>

От MSDN , вот разница:

  • Всегда - содержимое элемента управления UpdatePanel обновляется для всех обратных передач, исходящих со страницы. Это включает в себя асинхронные обратные передачи.

  • Условно - Содержимое элемента управления UpdatePanel обновляется при следующих условиях:

    • Если метод Update элемента управления UpdatePanel вызывается явно.
    • Если элемент управления определен как триггер с использованием свойства Triggers элемента управления UpdatePanel и вызывает обратную передачу. В этом сценарии элемент управления является явным триггером для обновления содержимого панели. Элемент управления триггером может находиться внутри или снаружи элемента управления UpdatePanel, который определяет триггер.
    • Если для свойства ChildrenAsTriggers установлено значение true и дочерний элемент управления UpdatePanel вызывает обратную передачу. В этом случае дочерние элементы управления UpdatePanel являются неявными триггерами для обновления панели. Дочерние элементы управления вложенных элементов управления UpdatePanel не вызывают обновления внешнего элемента управления UpdatePanel, если они явно не определены как триггеры.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...