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

Accès aux données Discussion :

[ADO.Net][C#/DataSet] Comment différer l'exécution de méthodes ?


Sujet :

Accès aux données

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 91
    Points : 78
    Points
    78
    Par défaut [ADO.Net][C#/DataSet] Comment différer l'exécution de méthodes ?
    Bonjour à tous.

    Je cherche la solution idéale pour différer l'exécution d'une ou plusieurs méthodes.
    En gros, le but est d'exécuter plusieurs méthodes en même temps.
    Le but est de mettre à jour une base de données uniquement quand l'user a cliquer sur OK.
    Pour ce faire, chaque fois qu'il coche ou décoche une CheckBox dans un DataGridView ça me génère un event. Dans la gestion de l'event, je dissocie si la méthode appelle procédure stockée insèrant ou effacant un enregistrement. Seul le nom change, le type d'argument serait toujours un int.
    Donc le seul argument de méthode appelant la SP, serait la primary key de cette ligne.

    Donc pour que quand l'user clique sur OK, il faudrait exécuter toutes les méthodes en même temps. J'ai pensé à une HashTable avec mes méthodes.
    Une HashTable de Delegates je pense.

    Le problème... c'est que je ne vois pas du tout comment faire, pour entasser et exécuter tous les delegates contenu dans ma HashTable une fois que l'event du bouton a été levé.

    Comme j'en suis encore à l'analyse, j'ai pensé à cette solution. Si quelqu'un pouvait me dire comment faire pour exécuter toutes les méthodes contenues dans ma HashTable ça serait formidable.

    Si quelqu'un a une autre solution, j'ai l'esprit ouvert !

    Merci.

  2. #2
    Inscrit Avatar de bilb0t
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    378
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 378
    Points : 283
    Points
    283
    Par défaut
    ça me parait pas très logique de faire ça. Imagine que ton user coche et décoche 10 la même case... Tu exécutes 10 fois la méthode ?

    Pq est-ce que tu n'analyse pas l'état de ton datagrid quand le user click sur ok ?

    Et suivant l'état de tes lignes, tu mets à jour ta DB...

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 91
    Points : 78
    Points
    78
    Par défaut
    Justement
    C'est pour ça que j'ai pris une HashTable.
    On donne l'accès à un composant. Ma clé de HashTable sera le nom du composant. Quand il cochera, il ajoutera à la HashTable.
    Si on coche ou décoche, et qu'on trouve déjà une entrée avec la même clé : on supprime.

    Donc au final, on fera que le strict nécessaire dans la base de données.

    Le problème est que j'ai plusieurs DataTable. Et qu'un seul DataGridView pour tous. Je dois mettre à jour une base de données au départ d'un DataSet.
    Je ne peux utiliser la méthode Update à cause de la politique de sécurité, ni les deleted, updated ou inserted rows pour la même raison.

    Donc pour faire un semblant de RollBack, je ne peux exécuter les méthodes que lorsqu'il clique sur le bouton OK.

  4. #4
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par L`artiste
    ...Je ne peux utiliser la méthode Update à cause de la politique de sécurité, ni les deleted, updated ou inserted rows pour la même raison...
    Certes, pourtant tu cherches à réimplémenter d'une certaine façon une methode manuelle du Update, il te faut donc je crois simplement itérer sur les tous les DataRow.RowState

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 91
    Points : 78
    Points
    78
    Par défaut
    Si j'ai bien compris ta doc, à partir du moment où je fais AcceptChanges c'est foutu non ?

    J'ai essayé d'implémenter la solution avec la Hashtable.
    Mais je me retrouve face à une erreur...

    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
     
            private Hashtable delegates;
            private delegate void testDelegate(String message);
            private testDelegate test;
            int i = 0;
     
            test = new testDelegate(bidon);
            delegates.Add(i,test("Bidon"));
            i++;
     
     
            private void bidon(String message)
            {
                MessageBox.Show(message);
            }
    Mais il couine misérablement quand je veux ajouter mon delegate avec son argument dans la Hashtable.
    Il prend mon appel à mon delegate non pas pour un objet mais void...

    Je ne vois pas trop comment faire dans ce cas...

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

Discussions similaires

  1. [ADO.NET][2.0] Comment se gère les pools de connection ?
    Par brousaille dans le forum Accès aux données
    Réponses: 8
    Dernier message: 04/03/2006, 19h11
  2. [C#][ADO.NET][2.0] Comment inserer des enregistrement ....
    Par doccpu dans le forum Accès aux données
    Réponses: 2
    Dernier message: 02/03/2006, 14h39
  3. [ADO.Net][C#/Mysql] Comment exécuter une requête paramétrée?
    Par wremacle dans le forum Accès aux données
    Réponses: 6
    Dernier message: 07/02/2006, 16h55
  4. [ADO.NET][C#/CSV]Comment acceder autres extensions que .txt?
    Par neptune dans le forum Accès aux données
    Réponses: 1
    Dernier message: 24/01/2006, 13h55
  5. [ADO.Net][C#/Oracle] Comment utiliser une requête paramètrée ?
    Par kaboume dans le forum Accès aux données
    Réponses: 4
    Dernier message: 05/07/2005, 14h50

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