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 :

Equivalent C# de eval en shell


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 5
    Par défaut Equivalent C# de eval en shell
    Bonjour à tous,

    Je suis en train de tester les dataGridView et pour ne pas avoir à m’embêter sur la définition du nombre de colonne, je souhaite le faire dynamiquement.

    Je récupère bien tout ce qu'il faut dans un sqlDataReader. J'ai le nombre de colonne avec monReader.FieldCount.

    Je peux donc par la suite faire l'init du dataGridView.ColumnCount et ensuite me générer avec une petite boucle le contenu de ma commande

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    string chaine="";
    string tempo = "";
     
    for (int i = 0; i < myReader.FieldCount; i++)
    {
      if (i == (myReader.FieldCount - 1))
        tempo = "myReader[" + i + "].ToString()";
      else
        tempo = "myReader[" + i + "].ToString(),";
      chaine += tempo;
    }
    J'ai souhaite ensuite passer cette liste de colonne à mon dataGridView

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    while (myReader.Read())
    {
      dataGridView1.Rows.Add(chaine);
    }
    Malheureusement, chaine est traité comme une chaine et pas comme une suite de colonnes.

    Je m'attend à avoir ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    while (myReader.Read())
    {
      dataGridView1.Rows.Add(myReader[0].ToString(),myReader[1].ToString());
    }
    Comment puis-je faire pour que ma commande le voit correctement ?

    Merci pour vos réponses.

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    je ne vois pas de rapport entre le titre et le message ...


    sinon pour le rows.add, tu lui donnes un string concaténé de toutes les valeurs, donc il ne voit qu'une valeur

    il faut une lui donner toutes les valeurs, tu peux les mettre dans un tableau ou un list<T>, rempli avec un for
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre Expert Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Par défaut
    un truc du genre:
    Code c# : 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
     
    dataGridView1.ColumnCount = 3;
    dataGridView1.Columns[0].Name = "Customer ID";
    dataGridView1.Columns[1].Name = "Customer Name";
    dataGridView1.Columns[2].Name = "Customer Country";
    // Populate the rows. 
    string[] row1 = new string[] { "C1", "Homer Simpson", "USA" };
    string[] row2 = new string[] { "C2", "Mickey Mouse", "USA"};
    string[] row3 = new string[] { "C3", "Oncle Donald", "USA"};
     
    object[] rows = new object[] { row1, row2, row3};
     
    foreach (string[] rowArray in rows)
    {
      dataGridView1.Rows.Add(rowArray);
    }

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 5
    Par défaut
    Parce qu'en shell j'aurais simplement fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    eval \$(ma_commande(${ma_chaine})
    et c'était bon.

    Vos solutions sont une piste mais ça ne fonctionne pas comme je le veux.

    Si j'ai 2 colonnes dans le résultat de ma requête, je veux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dataGridView1.Row.Add(myReader[0].ToString(),myReader[1].ToString());
    Si j'en ai 5 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    dataGridView1.Row.Add(myReader[0].ToString(),myReader[1].ToString(),
         myReader[2].ToString(),myReader[3].ToString()
         myReader[4].ToString());
    L'idée est de ne plus avoir à me soucier du nombre de colonne à afficher. Il le fait et c'est tout.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 5
    Par défaut
    En creusant l'idée de Pol63, j'ai réussi ce que je voulais.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
                string[] argu = new string[myReader.FieldCount];
     
                while (myReader.Read())
                {
                    for (int i = 0; i < myReader.FieldCount; i++)
                        argu[i] = myReader[i].ToString();
     
                    dataGridView1.Rows.Add(argu);
                }
    Merci pour l'aide

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

Discussions similaires

  1. Equivalent de __FILE__ (php) en Shell ?!
    Par Naeh dans le forum Linux
    Réponses: 2
    Dernier message: 26/12/2007, 15h41
  2. [VBA Excel] Equivalent Eval VB en VBA ?
    Par baselunaire dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/02/2007, 08h32
  3. Recherche l'equivalent de "eval()" du php
    Par Xo Sonic oX dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 04/08/2006, 16h46
  4. Equivalent du "eval" d'ActionScript ?
    Par kephy dans le forum Langage
    Réponses: 2
    Dernier message: 09/04/2006, 09h29
  5. []equivalent de eval
    Par phillag dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 22/08/2005, 15h30

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