Stockage DataSet-Datagrid

Résolu
Signaler
Messages postés
150
Date d'inscription
dimanche 14 mars 2004
Statut
Membre
Dernière intervention
21 décembre 2007
-
Messages postés
150
Date d'inscription
dimanche 14 mars 2004
Statut
Membre
Dernière intervention
21 décembre 2007
-
Il y aurait quelqu'un qui
pourrait m'expliquer comment faire pour éviter de ce reconnecter a la
base à chaque PostBack et refaire une requete Select pour récupérer à chaque fois les meme données.
  J'aimerais
acceder a la base une seule fois, au chargement de la page, et apres
jouer avec les données dans les PostBack sans refaire un appel. Il me semble que les données pouvait passer dans le ViewState mais je ne vois pas trop comment

Si quelqu'un pouvait mettre un bout de code assez complet ca maiderai a comprendre.
Ah oui tant que je suis dans les questions. Vous pourriez m'éclaircir sur l'utilisation des DataSet DataRead car il parle de connecter et non connecté mais je vois pas à quel endroit. Ainsi que la différence de donnée au datasource du datagrid directement la table du dataset ou de lui donnée la vue avec DefaultView????

Please Help....jgalere vraiment trop la....

3 réponses

Messages postés
150
Date d'inscription
dimanche 14 mars 2004
Statut
Membre
Dernière intervention
21 décembre 2007
2
Il faudrait peut etre voir du coté des requetes SQL carrement pour limiter le nombre d'enregistrement...mais la faudrait carrement une gestion voir meme une classe suplémentaire pour faire ca...à moins qu'il soit possible d'enregistrer un CurseurSQL et de n'extraire que les 10 prochaines lignes...

Cette idé est a creusé...peut etre dans un prochain post!!

Je valide que meme car la reflexion est bonne
Messages postés
427
Date d'inscription
mercredi 1 octobre 2003
Statut
Membre
Dernière intervention
29 janvier 2008
1
salut

Le viewState va te permettre de conserver les données dans la page mais sinon tu peux utiliser les sessions ou le cache (tout depends si les données affichées sont les memes pour tous les clients ou non)

ex : dans ton form_load

if(!isPostBack){ //au premier chargement de ta page
    maSqlConnexion.open();
   sqlDataAdapter da = new sqlDataAdapter("requete",maSqlConnexion);
   dataset ds = new dataSet();
   da.fill(ds);

   //Vu que tu utilise un dataAdapter et un dataSet tu peut fermer la connexion car tu peux travailler en mode deconnecter
  maSqlConnexion.close();

  //Ensuite tu stock ton dataSet en Session
    Session["monDs"] = ds;
  
    //Affichage des donées
    monDataGrid.datasource = ds.table[0];

}
else{ //Si tu reviens sur ta page apres un postBack 
   //Plus besoin d avoir acces a ta bdd
   monDataGrid.datasource = ((DataSet)Session["monDs"]).table[0];
}

j espere que j'ai repondu a ta question :p

sinon ben les dataView vont te permettre de filtrer les données dans les tables de ton dataSet

Bonne journée ++

/*
Bernie

MCP ASP.Net

*/
Messages postés
150
Date d'inscription
dimanche 14 mars 2004
Statut
Membre
Dernière intervention
21 décembre 2007
2
Aaaaahh!
Merci beaucoup de m'avoir répondu ca fait maintenant quelque jours que je galere sur ce problème et queje ne peux pas commencer mon site...

  Ouais je me suis également renseigner sur la structure de ASP.NET et c'est la solution aussi que j'envisageais mais mes connaissances étaient encore limiter, jattendait justement une confirmation!!! Et voila.

  Par contre, il me faudrait aussi un léger renseignement supplémentaire. Voila dans le cas d'une base de donnée énorme, la Session va etre grosse aussi au niveau mémoire MAIS de toutes facons, je suppose que cela est quand meme beaucoup plus avantageux par cette methode que d'appeler à chaque fois la base de données et de passer à chaque fois par le dataset qui stocke tout également en mémoire?

  En faite, j'aimerais avoir confirmation que c'est la meilleur solution dans le cas d'une grosse base de donnée et de consommation mémoire???

Sinon, je ne sais pas du tout comment il marche mais le dataread étant en mode connecté, je devrait à chaque postback me reconnecté. Mais si il marche en simple pointeur sur la base, il ne consommerait pas de mémoire intermédiaire non? Ainsi sur de grosse base de donnée ca m'éviterait de faire de la copie de mémoire inutile pour ne filtrer que 10 lignes dans le cas d'un datagrid paginer???

  Si tu pouvait m'éclaircir sur ce dernier point ca serait vraiment super!!! Car c'est vraiment sur le dernier point sur lequel je bloque!!

Encore merci pour ta réponse!