2012-08-22 4 views
3

Envisagez le scénario suivant:UpdatePanel Animation de courir après délai d'attente

MasterpageFile1:

<%@ Master Language="VB" AutoEventWireup="false" CodeBehind="Frame.master.vb" Inherits="Project.Frame" ClientIDMode="Static" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server" name="form1"> 
     <asp:ContentPlaceHolder ID="BodyPlaceHolder" runat="server"> 
     </asp:ContentPlaceHolder> 
    </form> 
</body> 
</html> 

Nested MasterPageFile:

<%@ Master Language="VB" MasterPageFile="/Project/Code/MasterPages/Frame.Master" CodeBehind="Master2.master.vb" Inherits="Project.Master2" %> 
<asp:Content ID="Content2" ContentPlaceHolderID="BodyPlaceHolder" runat="server"> 
    <input type="submit" id="btSubmit" runat="server" value="start" class="input" /> 
    <asp:UpdatePanel ID="up" runat="server" UpdateMode="Always"> 
     <ContentTemplate> 
      <div>CALCULATION RESULT GETS DISPLAYED HERE</div> 
     </ContentTemplate> 
     <Triggers> 
      <asp:AsyncPostBackTrigger ControlID="btSubmit" /> 
     </Triggers> 
    </asp:UpdatePanel> 
    <ajaxToolkit:UpdatePanelAnimationExtender ID="upae" runat="server" TargetControlID="up"> 
     <Animations> 
      <OnUpdating> 
       <Sequence> 
        <ScriptAction FPS="20" Duration="0.5" script="DoSomething();" /> 
       </Sequence> 
      </OnUpdating> 
      <OnUpdated> 
       <Parallel> 
        <ScriptAction FPS="20" Duration="0" script="DoSomethingElse();" /> 
       </Parallel> 
      </OnUpdated> 
     </Animations> 
    </ajaxToolkit:UpdatePanelAnimationExtender> 
</asp:Content> 

Une ASPX-page qui charge certains styles.

Et le follwing Code jQuery:

$(document).ready(function() { 
    $("#btSubmit").click(); 
}); 

Ce code déclenche l'UpdatePanel pour actualiser. L'animation OnUpdating est en cours de lecture, le serveur fait quelques calculs et envoie le résultat au client. Le client construit dans le résultat, mais le OnUpdatedAnimation nevers joue.

Si je remplace le code jQuery par le suivant, cela fonctionne correctement.

$(document).ready(function() { 
    setTimeout(function() { 
     $("#btSubmit").click(); 
    }, 1500); 
}); 

quelqu'un peut peut me dire, pourquoi cela se produit et comment atteindre, que le calcul commence lorsque le DOM est prêt et non 1,5 secondes plus tard?

Cordialement, Sören

Répondre

0

Je crois que la raison de ce comportement est que tous les objets clients sont initialisés lorsque postback partiel sur btSubmit clic est survenue.

Essayez d'utiliser ce script (placez-après ScriptManager contrôle):

Sys.Application.add_load(applicationLoadHandler); 

function applicationLoadHandler(sender, args) { 
    if (args.get_isPartialLoad() !== true) { 
      $("#btSubmit").click(); 
    } 
} 
+0

Got les mêmes problèmes ici. OnUpdating s'exécute. Le résultat est inséré, mais les animations mises à jour ne sont pas en cours d'exécution. La console n'enregistre aucune erreur ou avertissement. SetTimout résout également ce problème, mais c'est ce que je veux éviter. –