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

ASP.NET Discussion :

Problème d'affichage dans une Boucle Foreach


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    étudiant
    Inscrit en
    Décembre 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2015
    Messages : 5
    Par défaut Problème d'affichage dans une Boucle Foreach
    Coucou, j'ai un petit Souçis je vous explique le principe :
    Enfaite j'ai un TextBox Multilines " Search " et une Base de donnés d'ou je dois afficher le CodeArticle et le NomArticle grace à leurs ref_art = qui va être saisir dans la TextBox = Search

    Mon problème est avec ce Code :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    protected void Button1_Click(object sender, EventArgs e)
            {
                Con.Open();
     
                    DataTable dt = new DataTable();
     
     
                char delimiter = '\n';
                string[] substrings = search.Text.Split(delimiter);
                int i = 0;
                foreach (var substring in substrings)
                    // Linq to SQL
                    // SqlDataAdapter
                    //DataTable
                    // SDA.Fill (Data)
                    //Set Data or Data Set
                {
     
                    SqlDataAdapter SDA1 = new SqlDataAdapter("SELECT NOMARTICLE,CODEARTICLE from woork  Where Ref_Art='" + substring + "'", Con);
                    SDA1.Fill(dt);
     
     
                }
     
                GridView1.DataSource = dt;
     
                    GridView1.DataBind();
                Con.Close();
            }
    je n'arrive pas a afficher tous les donnés qui sont dans " Search " dans un tableau
    sa m'affiche toujours le dernier Réf et quand je supprime sa m'affiche l'avant dernier ect ...


    Mon But est d'Entrer plusieurs lignes de Ref_Art dans "Search" ( TextBox ) et qu'il m'affiche leurs CodeArticle et leurs NomArticle



  2. #2
    Membre émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Par défaut
    Bon je te passe le traditionnel laïus comme quoi ton code pique les yeux, requête concat et non paramétrées ... toussa toussa trop fatigué aujourd'hui.

    Maintenant ton problème me semble très simple au final et n'a rien a voir avec c#, puisqu'en faite ta requête n'est simplement pas bonne (en plus d'être une concat).
    En effet, si on écrit un exemple de ta requête finale tu as un truc comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE ref_art = 'ref1;ref2;re3'
    Et moi je paris que tu n'as aucune ref qui vaut exactement "ref1;ref2;re3" ...
    Donc commence par écrire une requête qui correspond a ce que tu attends dans ton requêteur préféré, une fois fait, tu pourra tenter de la mettre dans ton appli, mais même à ce moment là ça ne marchera pas puisque le code aussi sera en partie a revoir mais ça c'est pour plus tard et sera fonction de la requête.
    Il y a plusieurs façons de faire ce que tu demande, une façon simple serait peu être d'utiliser le IN de sql ...

    Bon code,
    J@ck.

    [EDIT] Moi aussi j'ai tout faux j'avais pas vu ton foreach, mais du coup c'est normal ce qui t'arrive puisque tu fais la requete autant de fois que tu as de ref ce qui est inutile et contre productif, surtout que ensuite tu affecte à ta GridView1 qu'une fois, a la fin, lorsque tout est fini, donc il ne te reste que la dernière...
    La solution passe donc quand même par le IN

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    étudiant
    Inscrit en
    Décembre 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2015
    Messages : 5
    Par défaut
    Comment sa ma requête n'est pas Bonne j'ai un TextBox Multilines ou y'aura plusieurs réference !
    je dois faire un parcour ligne par ligne et comparer avec ma requête d'ou j'ai fait une Boucle foreach (var substring in substrings) et
    ma req = SqlDataAdapter SDA1 = new SqlDataAdapter("SELECT NOMARTICLE,CODEARTICLE from woork Where Ref_Art='" + substring + "'", Con); avec chaque ligne !


    et bah si vous êtes un génie proposer le bon Code pour voir si sa marche ou pas ! Le principe est très claire et si je l'ai posté ici c'est pour avoir de l'aide pas pour dire deux mots et ne pas proposer le bon Code

  4. #4
    Membre émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Par défaut
    Citation Envoyé par garrix_du77 Voir le message
    et bah si vous êtes un génie proposer le bon Code pour voir si sa marche ou pas ! Le principe est très claire et si je l'ai posté ici c'est pour avoir de l'aide pas pour dire deux mots et ne pas proposer le bon Code
    Tu comprendra que maintenant je me désabonne de cette discussion... puisque visiblement tu refuse mon aide et mes conseils (peut etre attendais tu du code tout fait ?

    [EDIT] Et en plus tu me colle un pouce rouge, je pense pas que tu trouvera d'aide ici avec un tel discours. Tu as vue dans le titre du site il y a PRO en faite c'est pour professionnel ... essaye d'avoir un comportement pro et constructif tu auras plus de chance ... mais toujours pas de code tout fait, moi on me paye pour pisser du code tout fait.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    étudiant
    Inscrit en
    Décembre 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2015
    Messages : 5
    Par défaut
    comme tu veut mon pote tant que t'a pas de réponse j'ai demandé gentillement d'avoir de l'aide pas plus

    mais pas grave si sa marche pas c'est forcément ma requette est fausse -_- sa tous le monde le sais et c'est pour cela Monsieur je suis la pour quelqu'un me donne la Bonne Solution ou le Bon code ou la Bonne requete appelle sa comme tu veut .

  6. #6
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Vous avez un souci dans l’algorithmie de votre programme.

    En effet, pour chaque mot clé, vous faire une requête différente, qui vous renvoi un résultat différent correspondant à une et une seule référence à la fois.
    Vous écrasez alors votre datatable par le résultat de chaque requête successive : du coup au final il ne vous reste qu'une ligne, correspondant à la dernière requête exécutée.

    Cette méthode va aboutir à une catastrophe au niveau code et performances si vous arrivez à la faire tomber en marche.

    En lieu et place :

    - Générez une requête du type :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select * from produit where reference in (?, ?, ?)

    Il y aura autant de "?" qu'il y a de lignes dans votre liste de références.

    Pour chaque "?" vous allez ajouter un paramètre à votre requête :
    http://webman.developpez.com/article...ameter/csharp/

    Ensuite, vous n'aurez qu'une et une seule requête à exécuter, qui vous retournera toutes les lignes trouvées en une seule fois.

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

Discussions similaires

  1. [Débutant] Problème d'affiche dans une Boucle Foreach
    Par garrix_du77 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 08/08/2017, 00h22
  2. Problème de SCANF dans une boucle WHILE
    Par FidoDido® dans le forum C
    Réponses: 4
    Dernier message: 30/12/2005, 17h42
  3. [Conception] Problème de test dans une boucle while
    Par Cyrius dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 26/11/2005, 18h07
  4. [JSTL] Problème d'affichage dans un <c:forEach>
    Par zwck dans le forum Taglibs
    Réponses: 6
    Dernier message: 05/11/2005, 21h35
  5. Problème avec TNMSMTP dans une boucle.
    Par Orgied dans le forum Web & réseau
    Réponses: 3
    Dernier message: 07/04/2004, 10h19

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