web-dev-qa-db-fra.com

Appeler une fonction Javascript après le problème de publication avec UpdatePanel

J'ai essentiellement dans mon UpdatePanel un littéral qui génère un tableau javascript basé sur une méthode de mon codebehind.

Je n'ai pas de problème en ce qui concerne le chargement de mon contenu au chargement de la page. Mais si j'essaie d'effectuer une recherche pour mettre à jour mon littéral de tableau javascript dans mon updatepanel, j'ai constaté que le littéral est mis à jour à la publication après que le javascript a déjà été déclenché. 

Voici un exemple de base de ce que j'ai:

<script type="text\javascript">
function BindMyFunction(itemList)
{
    //Do something
}
</script>

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>  
<!-- Literal containing generated JS array -->
    <asp:Literal ID="ProfileJavscriptOutput" runat="server"></asp:Literal> 
    <ul id="person-search">
    <li><asp:TextBox ID="TxtFirstname" runat="server" Text=""></asp:TextBox></li>
    <!-- Update Literal onClick -->
        <li><asp:ImageButton CssClass="searchbtn" ID="ImageButton1" runat="server" OnClick="ImageButton1_Click" /></li>
    </ul>    
    <!-- Some jCarousel rendered -->
</asp:UpdatePanel>

J'ai regardé les articles suivants:

ASP.NET - UpdatePanel et JavaScript

appelez javascript après la publication de updatepanel

Mais je n'arrive pas à l'appliquer correctement à mon code.

Cela fonctionne bien lorsque je n'utilise pas UpdatePanel. Mais il est nécessaire que la position de la page ne bouge pas lorsque des recherches sont effectuées.

16
R100

vous pouvez ajouter le code suivant dans l'événement Page_Load:

ScriptManager.RegisterStartupScript(Me.rptGridAlbum, rptGridAlbum.GetType, "scriptname", "somejavascript", True)

Cela déclenchera le javascript sur votre page après le rappel AJAX.

MSDN

25
Andrew Ding

Vous pouvez créer une méthode de service Web simple qui renvoie le tableau javascript à la page si nécessaire et encapsuler l'appel de ce service Web dans une méthode javascript. Invoquer la méthode javascript pour actualiser le tableau en mémoire côté navigateur fonctionnera mieux que d’attendre que le littéral du tableau js soit analysé à nouveau sur les publications UpdatePanel avec tout succès.

0
Tahbaza
var prm = Sys.WebForms.PageRequestManager.getInstance();
if (prm != null) {
    prm.add_endRequest(function (sender, e) {
        if (sender._postBackSettings.panelsToUpdate != null) {
            DisplayCurrentTime(); // here your javascript function
        }
    });
};
0
Apps Tawale