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 :

Appel dynamique via reflexion


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 57
    Points : 35
    Points
    35
    Par défaut Appel dynamique via reflexion
    salut à tous,

    Je fais un appel dynamique sur une méthode de ma Form.
    Par exemple : l'utilisateur tape : Affichage@toto
    Affichage est une méthode et toto le paramètre attendu

    Via la Reflexion, j'appelle la méthode avec le Invoke, voici le code :
    t.InvokeMember(Commande,BindingFlags.Default|BindingFlags.InvokeMethod,null,obj,args);

    La méthode est bien executée, sauf que dans la méthode je fais appel à une classe qui accède à la base de données et renvoyant un objet de type table qui par la suite remplit un datagrid.

    La table est bien renvoyée mais le datagrid n'est jamais rempli.

    Voici le code de la méthode Affichage :
    oTable.Clear();
    oTable.Dispose();
    oTable=new DataTable();
    string err;
    oTable =cdata.RetournerTableComplete("select * from " + sTable,sTable,out err);
    DgResult.DataSource=oTable

    Quelqu'un aurait une idée ?

  2. #2
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 163
    Points : 112
    Points
    112
    Par défaut
    en debug tu es sur d'avoir des données dans ta table ?
    Essaye sans passer par la reflexion simplement.
    Sinon essaye en récupérant ton MethodInfo (GetMethod(nom) )> en décomposant tu devrai pouvoir trouver ton problème mais pour moi c pas un problème de reflexion

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 57
    Points : 35
    Points
    35
    Par défaut
    Quand j'interroge ma table , j'ai bien des enregistrements, cependant je me demande si ce ne serait pas une question de handle(Peut-être).
    Quand je fais un appel simple disons evenementiel, ma datagrid se remplit bien.

  4. #4
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Quand tu débogues, il passe bien dans la méthode qui sélectionne les enregistrements ?
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 57
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par SaumonAgile Voir le message
    Quand tu débogues, il passe bien dans la méthode qui sélectionne les enregistrements ?


    Oui, la méthode qui ramène les enregistrements est bien exécutée et le row.count contient le bon nombre d'enregistrements.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 57
    Points : 35
    Points
    35
    Par défaut
    Je pense cela doit venir du handle, par ce que quand j'interroge la propriété IsHandleCreated du DataGrid j'ai une réponse négative

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 57
    Points : 35
    Points
    35
    Par défaut
    J'ai résolu le problème en inserant la cible comme étant la form elle-même.
    En effet je faisais : object obj = Activator.CreateInstance(t) et mettais obj comme cible, forcement la cible avait un handle différent de ma fenêtre.

    Code modifié : t.InvokeMember(Commande,BindingFlags.Default|BindingFlags.InvokeMethod,null,this,args);

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

Discussions similaires

  1. VBS appel dynamique d'une fonction via une variable ?
    Par Wannapy dans le forum VBScript
    Réponses: 2
    Dernier message: 07/01/2010, 18h01
  2. tableau dynamique via une table sous sql server
    Par bibi2607 dans le forum ASP
    Réponses: 5
    Dernier message: 21/02/2005, 15h45
  3. [DOM] En java comment charger un XML en dynamique via un filtre
    Par fbertoux dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 16/12/2004, 18h35
  4. appel xmlservice via fonction javascript
    Par pram dans le forum XMLRAD
    Réponses: 2
    Dernier message: 06/05/2003, 14h24
  5. Réponses: 4
    Dernier message: 07/12/2002, 07h34

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