2010-12-01 5 views
0

J'ai un contrôle de répéteur qui affiche une liste de lecture pour mes utilisateurs, ce contrôle peut parfois tenir au moins 1000 chansons. C'est une fonctionnalité géniale, j'utilisais auparavant jQuery pour effectuer le tri côté client, mais cela a ses limites. J'ai donc mis en place un tri côté serveur qui fonctionne très bien, le seul problème que je vois est que lorsque la liste de lecture est aussi longue, cela prend une seconde ou deux avant que la publication et le tri ne commencent.Repeater Control asp.net

J'ai regardé les actions dans firebug et fait quelques recherches et je comprends que les valeurs de databound ne sont pas préservées, ce qui rend sence. Ma question est, en regardant dans Firebug, il semble que le contrôle de répéteur supprime tous les éléments de la collection avant de commencer la publication? Est-ce vrai que d'autres ont vécu cela?

+0

mieux vous ont Paging en place .. Ce –

Répondre

1

La commande de répéteur cesse d'exister entièrement entre les publications. Le contrôle du répéteur est appelé lorsque vous effectuez une demande de page. Il est rempli, etc., puis rendu au navigateur. Une fois cela fait, ASP.NET supprimera tous les objets de la page (ou plutôt le garbage collector les obtiendra si nécessaire.) De toute façon, vous ne pouvez plus les obtenir. Lorsque la publication se produit, elle doit recréer entièrement le répéteur entier. Il existe des mécanismes, tels que viewstate, qui essaient de rendre ceci aussi transparent que possible (c'est-à-dire de recréer des contrôles exactement comme vous les avez laissés dans la requête précédente) mais ils ne fonctionnent parfois pas comme prévu.

+0

est ce que je vois le GC enlever les articles, je suis juste surpised par le retard, mais il est seulement là quand il y a 1000 ou plusieurs lignes/articles. Merci – ChampChris

+0

Les retards sont probablement causés par la nécessité de reconstruire le contenu de votre répéteur à chaque fois. Vous voudrez peut-être jeter un coup d'œil aux différentes méthodes de mise en cache pour voir si elles conviennent à votre situation. Cela pourrait aider à reconstruire le contrôle plus rapidement si vous recevez les données d'une source externe à chaque fois. –