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 :

[VSTO] cache dans un document word.


Sujet :

C#

  1. #1
    maa
    maa est déconnecté
    Membre éclairé
    Avatar de maa
    Inscrit en
    Octobre 2005
    Messages
    672
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Octobre 2005
    Messages : 672
    Par défaut [VSTO] cache dans un document word.
    Bonjour,

    Je travaille sur un projet word 2007 document (VSTO 3). Je cherche à récupérer un dataset mis en cache du document dans une session précédente.
    Voici comment j'ai mis en cache le dataset :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
            [Cached]
            public DataSet data;
     
            private void ThisDocument_Startup(object sender, System.EventArgs e)
            {
                data = new DataSet();
     
                if (!this.IsCached("data"))
                    this.StartCaching("data");
     
                var table = data.Tables.Add();
                table.Columns.Add("aaa");
                table.Rows.Add("a value");
     
                if (this.IsCached("data"))
                    this.StopCaching("data");
    Le problème est que je ne vois pas comment le récupérer du cache. Plusieurs articles sur le web expliquent comment mettre en cache un dataset, mais je n'en ait trouvé aucun explique comment récupérer un dataset précédemment mis en cache.

    mathmax

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Remplace juste cette ligne:

    data = new DataSet();


    par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(data == null)
    {
        data = new DataSet();
    }

  3. #3
    maa
    maa est déconnecté
    Membre éclairé
    Avatar de maa
    Inscrit en
    Octobre 2005
    Messages
    672
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Octobre 2005
    Messages : 672
    Par défaut
    Le problème est que data est toujours null quand je redémarre le document (en mode debug), même si le code de mise en cache a été exécuté dans une session précédente. Comment faire alors pour récupérer son instance dans le cache ?

  4. #4
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Lorsque tu modifies ton document, tu enregistres bien les modifs ?

  5. #5
    maa
    maa est déconnecté
    Membre éclairé
    Avatar de maa
    Inscrit en
    Octobre 2005
    Messages
    672
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Octobre 2005
    Messages : 672
    Par défaut
    Tu veux dire quand je quitte word ? Oui. J'enregistre les modifications.

  6. #6
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Dans ce cas, il est étrange que ton Dataset soit toujours egal à null

  7. #7
    maa
    maa est déconnecté
    Membre éclairé
    Avatar de maa
    Inscrit en
    Octobre 2005
    Messages
    672
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Octobre 2005
    Messages : 672
    Par défaut
    J'ai compris .

    En fait il faut que je supprime cette ligne là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
                if (this.IsCached("data"))
                    this.StopCaching("data");
    Je sais pas pourquoi je pensais qu'il fallait modifier le dataset seulement entre l'instruction StartCaching et l'instruction StopCaching. En fait seul l'attribut Cached est ici utile.

  8. #8
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Bien vue

    A priori, tu dois même pouvoir supprimer cette ligne là:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if (!this.IsCached("data"))
                    this.StartCaching("data");

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB6 - Word] Insertion d'entêtes dans un document Word
    Par tmcgrady dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 27/09/2006, 14h45
  2. Réponses: 1
    Dernier message: 24/08/2006, 18h21
  3. [VB-W]Occurence d'un style dans un document Word
    Par cocotte06 dans le forum VBA Word
    Réponses: 1
    Dernier message: 23/06/2006, 07h06
  4. Réponses: 3
    Dernier message: 06/02/2006, 17h04
  5. Réponses: 5
    Dernier message: 27/09/2005, 09h18

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