IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Temps de chargement dans un Gridview


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut Temps de chargement dans un Gridview
    Bonjour

    J'ai mis en place un GridView avec une requête SELECT qui retourne pas mal de résutalt, genre plus de 1000 sur 15 colonnes.
    Du coup, j'ai activé la gestion des pages avec 25 par page. Mais 'jai l'impression qu'à chaque changement de page, il recharge tout. Du coup, ça prend du temps.

    J'avais cru comprendre que notre ami le GridView savait aller chercher juste ce dont il a besoins, c'est à dire les 25 enregistrements spécifiques à la page choisi ?

    Maintenant, il fort possible que j'ai oublié un truc, parce que j'ai codé ça vite fait, justement pour voir les performances.
    Voici mon code, vous constarez qu'il est trés light.
    Côté HTML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <%@ Control Language="VB" AutoEventWireup="false" CodeFile="GestionBien.ascx.vb" Inherits="Outil_GestionBien" %>
    <asp:SqlDataSource ID="sdsBien" runat="server" ConnectionString="<%$ ConnectionStrings:acced %>"></asp:SqlDataSource>
    <asp:GridView ID="gvBien" runat="server" DataSourceID="sdsBien"></asp:GridView>
    Côté CodeBehind
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Partial Class Outil_GestionBien
        Inherits System.Web.UI.UserControl
     
    	Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
    		sdsBien.SelectCommand = "SELECT * FROM ListingMandat"
    		With gvBien
    			.AllowPaging = True
    			.PageSize = 25
    		End With
    	End Sub
    End Class
    Merci pour votre aide.

  2. #2
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Citation Envoyé par zooffy Voir le message
    J'avais cru comprendre que notre ami le GridView savait aller chercher juste ce dont il a besoins, c'est à dire les 25 enregistrements spécifiques à la page choisi ?
    Et bah non
    Il affiche que les 25 lignes mais récupère tout en base à chaque fois

  3. #3
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Ok, donc j'ai mal comrpis à l'origine.

    Alors abordons le problème sous un autre angle. J'ai un vrai problème de performance. J'ai optimisé ma requête au maximum.
    J'ai vu que je pouvais travailler sur le SqlDataSource avec la propriété EnabledCache. Visiblement, ça marche bien, les performances sont bonnes. Mais du coup, lorsque qu'il y a un changement dans la base, il ne le prends pas en compte.

    Comment je pourrais faire pour qu'il me mette à jour le résultat de la requête, tout en utilisant le cache ?

    En fait, je maitrise mal les subtilités du SqlDataSource, mais je crois bien que c'est une arme absolue pour ce genre de chose.

    J'ai pensé mettre un bouton "mise à jour" dans la page, à côté du GridView. Comme ça, l'utilisateur navigue et ouvre autant de fiche qu'il veut et quand il ne ressent el besoin, il recharge. Faut savoir aussi que le Gridview va avoir tout une baterie de filtre et qu'il sera beaucoup solicité.

  4. #4
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Ton cache sera rechargé suite à toute modification en base

  5. #5
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Je viens de faire le test suivant :
    J'ai rajouté la propriété dans mon code comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
    		With sdsBien
    			.SelectCommand = "SELECT * FROM ListingMandat"
    			.DataSourceMode = SqlDataSourceMode.DataSet
    			.EnableCaching = True
    		End With
     
    		With gvBien
    			.AllowPaging = True
    			.PageSize = 25
    		End With
    	End Sub
    Le reste du code ne change pas.

    J'ai changé une info dans la base, en direct, comme si un autre utilisateur l'avais fait ou n'importe quel traitemnt pouvant le faire.

    Lorsque j'ai appellé ma page, il a mis beaucoup de temps à ce charger. Puis, j'ai navigué dans les pages du GridView, puis je suis revenu sur la apge de GridView qui contient la ligne modifiée et la valeur est toujours l'ancienne.

    Donc, soit j'ai pas bien fait mon SqlDataSource ou le GridView, soit le cache ne se mets pas à jour tout seul.

    Vois tu le problème ?

  6. #6
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    T'as configuré ta base pour qu'elle gère le cache?
    (Faut bien qu'elle informe ton appli que son contenu a changé, et c'est pas le comportement par défaut)

Discussions similaires

  1. Comment réduire le temps de chargement d'une base SQLite dans un dataset?
    Par billybobbonnet dans le forum Accès aux données
    Réponses: 9
    Dernier message: 29/08/2014, 17h39
  2. [SP-2007] Temps de chargement d'un document dans Sharepoint
    Par mouss4rs dans le forum SharePoint
    Réponses: 11
    Dernier message: 23/10/2012, 14h25
  3. Réponses: 6
    Dernier message: 22/09/2010, 15h10
  4. Temps de chargement dans un TreeView
    Par Delphi-ne dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 21/05/2007, 17h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo