2010-05-26 5 views
1

J'ai une application où un javascript lit la position GPS de l'appareil et l'envoie au script Serverside comme ceci:AJAX.NET __doPostBack change tout autre contenu

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

et j'ai quelques AJAX.NET Code:

<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> 

Et un peu plus bas

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

Le problème est que les derniers divs contenu intérieur change lorsque l'événement de UpdatePanel1 a terminé. Pourquoi donc? Je ne veux pas que le contenu en dehors de UpdatePanel1 soit changé chaque fois que UpdatePanel1 fait son truc. S'il vous plaît aider.

Répondre

1

La valeur par défaut UpdateMode est Always, dans ce cas, vous voulez Conditional, comme ceci:

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

From MSDN, voici la différence:

  • Toujours - Le contenu du contrôle UpdatePanel est mis à jour pour toutes les publications qui proviennent de la page. Cela inclut les publications asynchrones.

  • conditionnelle - Le contenu du contrôle UpdatePanel est mis à jour dans les conditions suivantes:

    • Si la méthode Update du contrôle UpdatePanel est appelé explicitement.
    • Si un contrôle est défini en tant que déclencheur à l'aide de la propriété Triggers du contrôle UpdatePanel et provoque une publication. Dans ce scénario, le contrôle est un déclencheur explicite pour la mise à jour du contenu du panneau. Le contrôle de déclenchement peut être à l'intérieur ou à l'extérieur du contrôle UpdatePanel qui définit le déclencheur.
    • Si ChildrenAsTriggers property est défini sur true et qu'un contrôle enfant du contrôle UpdatePanel provoque une publication. Dans ce scénario, les contrôles enfants du contrôle UpdatePanel sont des déclencheurs implicites pour la mise à jour du panneau. Les contrôles enfants des contrôles UpdatePanel imbriqués ne provoquent pas la mise à jour du contrôle UpdatePanel externe à moins qu'ils ne soient explicitement définis en tant que déclencheurs.
+0

Je pense que vous devez également appeler UpdatePanel2.Update() dans votre code-behind de mettre à jour le panneau ainsi, je pense ... – Mantorok

+0

@Mantorok - Ça dépend quand il * ne * veulent à jour , a ajouté les documents pertinents pour cela, s'il veut seulement qu'il soit mis à jour quand un contrôle à l'intérieur le provoque, alors cela est pris en charge ... mais oui lorsqu'il est mis à jour en externe, vous devez appeler '.Update()'. –

+0

Merci Craver, travaillé comme un charme – Raul

Questions connexes