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

C# Discussion :

[DataSet] RowChanged event et image


Sujet :

C#

  1. #1
    Membre actif
    Homme Profil pro
    Création de jeux video (en amateur)
    Inscrit en
    Mars 2003
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Création de jeux video (en amateur)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 408
    Points : 260
    Points
    260
    Par défaut [DataSet] RowChanged event et image
    Bonjour,

    J'ai des images stockées dans une table d'un DataSet.
    Comme elles sont stockées en mémoire sous forme sérialisées, je voulais garder un cache de la version "mémoire" des images.

    Pour cela je m'abonne à la table en question et sur le RowChange() ou ColumnChange, je Deserialise le champ correspondant à l'image et stocke la version "mémoire" de l'image avec son identifiant.

    Le problème et que le RowChange (ou columnChange, meme combat), se lance vraiment n'importe quand !

    Par exemple je change de ligne dans mon GridView, sans avoir changé l'image, et hop l'évenement RowChange est lancé.

    Comme mes images sont très grosses çà rame énormément, alors que je ne change même pas les images. Comment pallier à ca ?

    D'avance merci.

  2. #2
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    D'une façon générale, mieux vaut séparer les images dans une table d'images (avec un champ Index primaire "ImageId" et un champ secondaire "DataId") parallèle à la table où il y a les données (avec comme index primaire "DataId") et gérer spécifiquement le chargement des images.

    Ainsi, on peut tester si l'image est dèjà chargée via sa clé "ImageId".

    Et en prime, on peut facilement évoluer vers plusieurs images pour un enregistrement Data.

  3. #3
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 175
    Points : 25 116
    Points
    25 116
    Par défaut
    RowChange se déclenche quand la ligne change, pas quand les données ne sont pas les meme donc le fonctionnement me semble normal

    pourquoi veut tu garder les images en mémoire ?

  4. #4
    Membre actif
    Homme Profil pro
    Création de jeux video (en amateur)
    Inscrit en
    Mars 2003
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Création de jeux video (en amateur)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 408
    Points : 260
    Points
    260
    Par défaut
    @Graffito, je n'ai pas trop compris ce que tu m'expliquais.
    tu as une table Image avec la clef ImageId, ça d'accord. et Tu as une table ImageData avec la clef DataId, et un champ Data qui contient les byte[] ?
    Donc tu as une sorte de Bijection entre la clef ImageId et DataId, c'est ca ? Mais je ne comprends pas trop comment tu t'en sorts après. Peux-tu m'expliquer stp ?

    @sperot51 : oui tu as raison, ca a l'air d'être "quand on change de ligne", et pas "lorsque la ligne a changé" (au sens ou c'est son contenu qui a changé), quoique l'explication est assez ambigue je trouve... Enfin bon avec ColumnChange c'est pas ambigu, mais ca donne le meme gag, on change de ligne sans changer de valeur, et le columnChange se déclenche quand meme.

    Je veux garder les images en mémoire, parceque le dataset les stocke sous la forme sérializée (byte[]), et que mon appli n'est pas une appli de gestion et a besoin que les images s'affichent très vite... tout en bénéficiant des facilités offertes par le dataset (databinding etc...)

  5. #5
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Donc tu as une sorte de Bijection entre la clef ImageId et DataId
    Exact, si une image maximum par enregistrement de données (dans ce cas "ImageId" est inutile).
    Ce Champ "ImageId" permet d'évoluer vers plusieurs images par enregistrement.

    je Deserialise le champ correspondant à l'image et stocke la version "mémoire" de l'image avec son identifiant et stocke la version "mémoire" de l'image avec son identifiant.
    ...
    Mais je ne comprends pas trop comment tu t'en sorts après.
    Quand il faut "désérialiser" ET si l'image n'est pas en mémoire, tu lis l'image et tu la désérialise.

Discussions similaires

  1. [C#2.0][DataSet XSD]WriteXml avec Image
    Par SLE dans le forum Windows Forms
    Réponses: 7
    Dernier message: 11/10/2007, 16h20
  2. [C#]ListBox, image et dataset
    Par Djekill dans le forum ASP.NET
    Réponses: 2
    Dernier message: 11/12/2006, 12h52
  3. event.target marche pas avec les images
    Par tuxout dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 18/08/2006, 17h46
  4. Réponses: 3
    Dernier message: 16/05/2006, 14h47
  5. [C#] Récup champ IMAGE SQLServer avec un DataSet Typé
    Par SoaB dans le forum Windows Forms
    Réponses: 3
    Dernier message: 27/07/2005, 14h53

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