2010-05-26 4 views
1

У меня есть приложение, где Javascript считывает местоположение GPS устройства и отправляет его на стороне сервера скрипт так:AJAX.NET __doPostBack изменяет другое содержимое

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> 

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

ответ

1

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

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

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

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

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

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

Я думаю, вы также должны вызвать UpdatePanel2.Update() в коде-позади, чтобы обновить панель, а также, я думаю ... – Mantorok

+0

@Mantorok - Зависит от того, когда он * действительно * хочет обновлений , добавили соответствующие документы для этого, если он только хочет, чтобы он обновлялся, когда элемент управления внутри него вызывает его, тогда это позаботится ... но да, когда вы обновляетесь извне, вам нужно вызвать '.Update()'. –

+0

Спасибо, Craver, работал как шарм – Raul

Смежные вопросы