2008-12-08 4 views
0

Y a-t-il des avantages de performance à ne pas utiliser le gridview dans asp.net pour les requêtes de tables simples à partir d'une procédure stockée et à la place écrire le code HTML dans le code serveur moi-même. Je suis sûr que mon code serait certainement plus concis en sortie.asp.net gridview vs écriture innerhtml

Répondre

2

Je vais vous proposer une autre solution. Si vous n'avez besoin d'aucune des fonctionnalités d'un GridView, pourquoi ne pas utiliser un répéteur.

Un répéteur facilite la mise en œuvre, mais vous permet également d'avoir un contrôle total sur la source générée. Sans le problème de la préformance de concaténation de chaînes.

J'ai trouvé des améliorations de performances marginales avec les répéteurs sur GridViews.

0

Non, l'utilisation d'un GridView ne présente aucun avantage en termes de performances. En général, le GridView va diminuer un peu de performance en raison du fait que les éléments sont écrits dans ViewState, et HTML supplémentaire est généré. Les avantages que vous obtenez de GridView incluent des événements de commande et des arguments qui peuvent être facilement consommés ou créés, un «sac de propriétés» DataKey qui vous permet de suivre les champs critiques dans un grand ensemble de résultats, ainsi que bien d'autres choses. Je vais ajouter cette mise en garde que j'ai utilisé GridViews sur des retours de jeu de résultats, même très simples et n'ont pas vu de problèmes de performance significatifs.

Si vous effectuez simplement une sortie à partir d'une requête de table et que vous ne vous souciez pas trop d'interagir avec les données des résultats, "rouler le vôtre" serait une excellente solution.

0

Eh bien, cela dépend de votre implémentation. Vous pourriez presque certainement construire quelque chose qui fonctionne plus vite que la grille de stock.

Le problème est, comment le sauriez-vous? Le système par défaut pour la concaténation de chaînes dans .Net est par sa nature très lente, il serait donc facile de construire accidentellement quelque chose qui est beaucoup plus lent que le gridview stock. Vous pouvez bien sûr tester les choses, mais l'investissement en temps de développement est susceptible de l'emporter sur les gains de performance du serveur.

0

Il existe une possibilité supplémentaire ici entre l'utilisation d'un GridView et l'utilisation d'un StringBuilder pour générer du code HTML. Je parle d'utiliser la classe ASP Table. J'ai vu des gains de vitesse impressionnants en les utilisant sur un GridView standard quand tout ce que je fais est de cracher des données. En bonus, je peux ajouter un bouton (ou un bouton de lien) à ma sortie et le connecter avec un gestionnaire d'événements tout en obtenant la fonctionnalité d'un GridView à cet égard.

Vous utiliseriez ainsi:

Dim tab As New Table 
For Each row In DataTable.Rows 
    Dim tabRow as New TableRow 
    For Each col In row.Columns 
    dim tabCol as New TableColumn 
    tabCol .Text = row(col) 
    tabRow.Controls.Add(tabCol) 
    Next 
    tab.Rows.Add(tabRow) 
Next 
Page.Controls.Add(tab)