2010-07-06 3 views
0

J'ai une page Web asp.net qui fait un tas de calculs (lent, d'où le problème) et les jette tous dans une grille de données dans une page Web. J'aimerais pouvoir afficher des résultats partiels sur la page.actualisation par programme d'un DataGrid dans ASP.net

J'ai trouvé comment re-mettre à jour la grille chaque fois qu'une rangée est faite, mais la page n'affiche toujours pas les résultats jusqu'à ce que tous les calculs soient complets. Est-ce que quelqu'un connaît un appel de asp.net qui peut dire à la page de se rafraîchir?

p.s. la fonction de mise à jour que je utilise actuellement est la suivante:

private void updateDisplay(DataTable outputTable) 
    { 
     if (outputTable.Rows.Count > 0) 
     { 
      PlaceHolder1.Controls.Clear(); 

      PlaceHolder1.Controls.Add(new LiteralControl("<br>")); 
      GridView myView = new GridView(); 
      myView.DataSource = outputTable; 
      myView.DataBind(); 
      myView.Visible = true; 

      PlaceHolder1.Controls.Add(myView); 
     } 
    } 

Répondre

0

Vous pouvez toujours utiliser quelque chose comme le Ajax Timer ainsi que certains efficient paging (seulement en tirant une petite quantité de données au lieu de tout). De cette façon, vous faites une déclaration de sélection courte pour dis 10 enregistrements sur un intervalle de toutes les 3 secondes, et vous le faites en dehors du thread de processus.

Si vous préférez garder la façon dont vous l'avez avec la mise à jour de la grille à chaque fois qu'une ligne est ajoutée, c'est très bien aussi, assurez-vous que vous commencez votre grand processus lourd, levage dans un BackgroundWorker séparé. Je voudrais également mettre en œuvre la pagination plus efficace afin de garder vos déclarations select petites et rationalisées.

+0

En quoi déplacer le levage lourd sur un thread de travail en arrière-plan aide-t-il réellement? –

+0

il fait en sorte que l'application peut encore effectuer ses tâches et donner à l'utilisateur une expérience utilisateur agréable sans avoir à attendre une grande tâche à remplir. Exemple: je devais avoir une application qui insérait environ 10 000 enregistrements via un téléchargement CSV ... Je ne voulais pas que l'utilisateur attende l'insertion (seulement le téléchargement réel) .. donc j'ai décoré la fonction d'insertion DB afin qu'ils puissent aller avec ce qu'ils devaient faire sans attendre l'insertion pour compléter. –

Questions connexes