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 :

[2.0]Comment limiter le nombre d'accés à la base de données


Sujet :

ASP.NET

  1. #1
    Membre régulier Avatar de DoRiane
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 127
    Points : 110
    Points
    110
    Par défaut [2.0]DataBind avant le PageLoad après un postBack ???
    Bonjour,
    j'ai une page qui présente un ObjectDataSource (ods), un gridView (gv) et un formView (fv)
    Le gv et le fv présente les mêmes informations mais l'un en liste et l'autre en formulaire pour l'édition et l'insertion d'enregistrement.

    Premier problème : lors du chargement de la page, la requete à la base de donnée est lancée à chaque fois que la méthode select du ods est apelée .
    Ceci ralenti bien evidement le chargement de la page.

    En plus à ce beau tableau, j'ai rajouter un tri sur le gv.
    Dans ce cas, la requete est lancée 3 fois

    Alors j'ai bien essayé d'utiliser le Cache du ods mais dans ce cas le tri ne fonctionne plus
    Voici l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    La source de données 'odsSynthese' ne prend pas en charge le tri de données IEnumerable. 
    Le tri automatique n'est pris en charge qu'avec DataView, DataTable et DataSet.
    alors que sans EnableCaching=true, le tri fonctionne.

    D'avance merci pour votre aide

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    Au lieu de mettre les WebControls qui sont dynamique en Cache, pourquoi ne mettrais tu pas tout simplement les données extraites par celui ci ?

    J'espere t'aider un peu en te donnant cette piste.

  3. #3
    Membre régulier Avatar de DoRiane
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 127
    Points : 110
    Points
    110
    Par défaut
    Bonjour, je ne comprend pas bien ce que tu veux dire par la? Mais j'ai une architecture n tier, je ne peux donc pas utiliser de sqlDataSource.

  4. #4
    Membre expérimenté Avatar de bizet
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2005
    Messages
    717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 717
    Points : 1 338
    Points
    1 338
    Par défaut
    Salut

    pourquoi est ce que tu ne fais pas une seule requete a ta base qui va te recuperer la liste d'objet et tu passes cette liste d'objet en parametre de ton controle.

    J'ai pas tout compris de ce que tu cherches a faire mais voila comment j'aurais fait :

    dans ta couche données, je fais une fonction ListObject() qui me renvoie une liste d'objets et je passe cette liste d'objet en parametre de mes composants, comme ca je ne fais qu'une seule requete a la base de données.

    Regarde si ca ne peut pas s'appliquer a ton cas.

  5. #5
    Membre régulier Avatar de DoRiane
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 127
    Points : 110
    Points
    110
    Par défaut
    Je me suis surement mal exprimé !

    dans ta couche données, je fais une fonction ListObject() qui me renvoie une liste d'objets et je passe cette liste d'objet en parametre de mes composants, comme ca je ne fais qu'une seule requete a la base de données.
    c'est ce que je fais.
    Maintenant j'ai un peu modifié mon code et je suis arrivée à résoudre mon problème mais ce n'est pas très propre.
    j'affecte le DataSourceId de mon gridView dans le Init du gridView et j'utilise le cache du ods pour concerver le résultat de la requete le temps que le formView récupère les informations.

    Le problème subsite maintenant pour une autre page. J'ai dans celle-ci un mutiView qui me permet de gérer des onglets.
    Au premier chargement de la page, tout se passe bien.
    Par contre quand je change d'onglet, il charge d'abort le gridView de l'onglet précédent (dans l'init de la page) puis celui de l'onglet sélectionné (dans le Load de la page).

    Globalement, le pb peut se résumer de la facon suivante :
    Lors d'un rechargement de la page, il garde en mémoire l'état de l'objet dans la page. Pourtant j'ai bien désactivé le ViewState de tous mes objets. imcompréhensible

  6. #6
    Membre régulier Avatar de DoRiane
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 127
    Points : 110
    Points
    110
    Par défaut
    Voici peut-être une meilleur facon d'exprimer mon problème

    J’ai une page avec 1 contrôle (GridView) qui est lié à une source de données (ObjectDataSource).

    Lors du premier chargement de la page,

    La requête que porte la source de donnée est exécutée après l’événement Page_Load

    Seulement quand la page se recharge (PostBack), l’exécution de la requête se fait avant le Page_Load. Ceci me pose des problèmes parce que les valeurs qui sont dans le ViewState ne sont pas encore initialisées.

    J'y mets tous mes espoirs

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

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Et si tu refais un DataBind dans le page load?

  8. #8
    Membre régulier Avatar de DoRiane
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 127
    Points : 110
    Points
    110
    Par défaut
    Oui c'est en effet une solution seulement, dans ce cas il va faire 2 fois la requete et ca je n'en veux pas. Moi je voudrais seulement qu'il ne le fasse pas avant le page_load.
    D'un autre coté si je ne met pas l'instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    gridView.DataSourceId = "ods";
    dans la méthode Init du gridView, les boutons qui porte un commandName genre Select ou edit ne fonctionnent pas.
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Comment limiter le nombre maximal de caractères d'un textarea ?
    Par hanafimohammed dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/05/2007, 21h03
  2. Comment limiter le nombre de sessions d'un utilisateur?
    Par nmathon dans le forum Sécurité
    Réponses: 19
    Dernier message: 28/03/2007, 11h26
  3. Réponses: 7
    Dernier message: 13/01/2007, 16h53
  4. [CR 9.0]Comment limiter le nombre d'enregistrements sur une page
    Par popol666 dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 06/11/2006, 15h27
  5. Comment limiter le nombre apres la virgule?
    Par pierrot10 dans le forum Langage
    Réponses: 2
    Dernier message: 25/10/2006, 22h12

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