2008-09-12 9 views
1

J'ai une page de résultats de page (vous y arrivez après avoir soumis votre requête de recherche ailleurs) avec tout un tas de gridviews pour différents types d'objets de données.AJAX Chargement partiel de page?

De toute évidence, certaines requêtes prennent plus de temps que les autres. Comment puis-je rendre chaque gridview rendu dès qu'il a les données dont il a besoin?

Cela a été difficile pour moi, car il doit fonctionner sur un postback ainsi qu'un pageload. En outre, les sources de données d'objet se déclenchent automatiquement lors du chargement/de la publication de la page; Je n'appelle aucune méthode par programme pour obtenir les données. Vais-je devoir changer cela?

Répondre

2

@Gareth Jenkins

la page exécutera toutes les requêtes avant de revenir, même le premier panneau de mise à jour, donc il ne sera pas de gagner du temps là-bas. L'astuce pour cela est de déplacer chacune de vos gridviews complexes dans un contrôle utilisateur, dans le contrôle utilisateur, de se débarrasser de la merde Object DataSource, et de faire votre liaison dans le code derrière.

Ecrivez votre code de liaison de sorte qu'il ne lie que dans cette situation:

if (this.isPostBack && ScriptManager.IsInAsyncPostback) 

Puis, dans la page, rafraîchir programaticly le panneau de mise à jour en utilisant javascript une fois la page chargée, et vous aurez chacun rendu gridview une fois qu'il est prêt.

0

Pourriez-vous placer les DataGrids dans des panneaux dont la visibilité est false, puis appeler une fonction javascript côté client à partir de l'événement onload du corps qui appelle une fonction côté serveur qui définit la visibilité des panneaux sur true?

Si vous combinez ceci avec un contrôle asp: updateProgress et que vous enveloppez le tout dans un UpdatePanel, vous devriez obtenir quelque chose proche de ce que vous cherchez, surtout si vous avez truqué la fonction js appelée onload pour n'en montrer qu'une panneau et appeler une fonction de retour qui a montré la prochaine etc.

Questions connexes