2008-10-02 6 views
2

J'utilise ASP.NET 2.0 avec AJAX Extensions (1.0?) Et je me demande s'il est possible d'appeler une méthode de façon asynchrone et avoir les résultats remplir sur la page après qu'elle a été chargée .Fire Async méthode sur le chargement de la page avec AJAX

J'ai un gridview qui est rempli par une requête SQL assez longue. Je préférerais que la page apparaisse et que les résultats retournent au fur et à mesure qu'ils sont renvoyés du serveur au lieu de forcer l'utilisateur à regarder une page vierge jusqu'à ce que tout soit traité.

Répondre

0

Vous pouvez placer un bouton caché à l'intérieur de votre panneau de mise à jour et faire un PostBack sur ce bouton. Ce n'est pas une solution élégante mais ça marche bien.

À l'intérieur de votre panneau de mise à jour, vous écrirez quelque chose comme ceci.

<div style="visibility:hidden"> 
    <asp:Button ID="btnLoad" OnClick="btnLoad_Click" runat="server"/> 
</div> 

Sur votre événement Page_Load vous devez enregistrer le script pour la publication automatique:

protected void Page_Load(object sender, EventArgs e) 
{  
    if (!Page.IsPostBack) 
    { 
     ScriptManager.RegisterStartupScript(this, this.GetType(), "InitialLoad" + this.ClientID, Page.ClientScript.GetPostBackEventReference(btnLoad, "")+";", true); 
    } 
} 

Ensuite, vous pouvez écrire le code qui sera exécuté au démarrage dans la méthode btnLoad_Click (événement OnClick pour le bouton) .

J'ai essayé une autre approche en utilisant un AJAX Timer et en le désactivant sur la première Tick mais parfois je reçois plus d'un tick avant que le code derrière ne soit exécuté, donc j'ai jeté cette solution.

Questions connexes