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 :

Boucle et datalist


Sujet :

C#

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 119
    Points : 104
    Points
    104
    Par défaut Boucle et datalist
    Bonjour,

    Ne sachant pas trop comment expliquer mon probleme, je vais expliquer ce que j'ai fais et ce que je cherche a faire.

    Il y a plusieurs type de partenaires. J'aimerais creer un dataList pour chaque type avec à l'interieur les données des partenaires appartenant à ce type.

    EX:
    TYPE1: (datalist contenant les partenaires de TYPE1)
    TYPE2: (datalist contenant les partenaires de TYPE2)
    TYPE3: (datalist contenant les partenaires de TYPE3)

    J'ai donc d'abord creer une requete cherchant la liste des types. Puis je fais une boucle parcourant les resultats. Imaginons que le résultat dans un tour de boucle est TYPE1 alors je fais une requete du style (SELECT * FROM partenaire WHERE type = [variable contenant le type ici TYPE1])

    Je possede maintenant tous les partenaires appartenant a TYPE1

    Je remplis le datalist des informations (Le datalist se trouve dans "mapage.aspx" alors que le code C# se trouve dans mapage.aspx.cs)

    J'ai terminé le premier tour de boucle, je recommence avec le TYPE2.

    Mon probleme est que avec le code suivant, il y a un seul dataList d'afficher et c'est le dernier (ici le datalist du TYPE3). Ce qui voudrai donc dire qu'a chaque fois que je creé un datalist, il efface le precedent :s

    Voici le code dans la boucle de traitement des types:


    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
    30
    31
    32
    33
    34
    35
        //Instanciation des objets
        OleDbConnection oConnexion = new OleDbConnection();
     
        //Chaine permettant la connexion à la base Oracle
        string sConnexionString = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = ../PS.mdb";
        oConnexion.ConnectionString = sConnexionString;
     
        //Chaine contenant la requete SQL
        string sSQL = "SELECT * FROM partenaires WHERE type = " + valeur;
     
        //Ici valeur est le numero du type en cours
     
        OleDbCommand com = new OleDbCommand(sSQL, oConnexion);
     
        //On ouvre la connexion
        oConnexion.Open();
     
     
        if (com.ExecuteScalar() != null)
        {
            Response.Write(dr["typePartenaire"].ToString());
     
            DataSet ds = new DataSet();
     
            OleDbDataAdapter myCommand = new OleDbDataAdapter(sSQL, oConnexion);
     
            myCommand.Fill(ds, "partenaires");
     
            DTL.DataSource = ds.Tables["partenaires"].DefaultView;
            DTL.DataBind();
     
          //Ici DTL est le datalist
     
            ds.Clear();
        }

    J'espere que j'ai été assez clair

    Si vous pouviez m'aider. Merci

  2. #2
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2004
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 304
    Points : 405
    Points
    405
    Par défaut
    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
     
    List<DataList> DTL = new List<DataList>();
    int i=0;
    while(/*ta condition*/)
    {
     //Instanciation des objets
     OleDbConnection oConnexion = new OleDbConnection(); 
     //Chaine permettant la connexion à la base Oracle
     string sConnexionString = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = ../PS.mdb";
     oConnexion.ConnectionString = sConnexionString;
     //Chaine contenant la requete SQL
     string sSQL = "SELECT * FROM partenaires WHERE type = " + valeur;
     //Ici valeur est le numero du type en cours
     OleDbCommand com = new OleDbCommand(sSQL, oConnexion);
     //On ouvre la connexion
     oConnexion.Open();
     if (com.ExecuteScalar() != null)
     {
        Response.Write(dr["typePartenaire"].ToString());
        DataSet ds = new DataSet();
        OleDbDataAdapter myCommand = new OleDbDataAdapter(sSQL, oConnexion);
        myCommand.Fill(ds, "partenaires");
        DTL[i].DataSource = ds.Tables["partenaires"].DefaultView;
        DTL[i].DataBind();
        //Ici DTL est le datalist
        ds.Clear();
     }
     i++;
    }
    DTL Devient une liste de DataList
    S'il n'y a pas de Solution, c'est qu'il n'y a pas de Problème.
    ----------------------------------------------------------------------------------------
    Pour se protéger, un bon préservatif pour votre PC : AntiVir et SpyBot - Search & Destroy

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 119
    Points : 104
    Points
    104
    Par défaut
    Merci d'avoir répondu

    J'avais pas pensé a ça. Mais ça me parait etre une bonne solution.

    J'obtiens cette érreur:

    Détails de l'exception: System.ArgumentOutOfRangeException: L'index était hors limites. Il ne doit pas être négatif et doit être inférieur à la taille de la collection.
    Nom du paramètre : index

    Erreur source:

    Ligne 87 : DTL[i].DataSource = ds.Tables["partenaires"].DefaultView;
    Ligne 88 : DTL[i].DataBind();
    Ligne 89 : i++;

    Je ne sais pas si l'erreur viens de la mais à ce que j'ai compris, on fait une liste de datalist et a chaque tour de boucle on ajoute un datalist dans cette liste. Comment le programme fait-il pour afficher par exemple DTL[1] sachant qu'on ne l'a jamais definis (nom des header, couleurs, aspect...)

  4. #4
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2004
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 304
    Points : 405
    Points
    405
    Par défaut
    l'idée est là, à toi de la développer

    Mon code est faux,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    //il faudrai remplacer 
    DTL[i].DataSource = ds.Tables["partenaires"].DefaultView;
    DTL[i].DataBind();
    //Par
    DataList dtl = new DataList();
    dtl.DataSource = ds.Tables["partenaires"].DefaultView;
    dtl.DataBind();
    DTL.Add(dtl);
    //etc...
    S'il n'y a pas de Solution, c'est qu'il n'y a pas de Problème.
    ----------------------------------------------------------------------------------------
    Pour se protéger, un bon préservatif pour votre PC : AntiVir et SpyBot - Search & Destroy

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 119
    Points : 104
    Points
    104
    Par défaut
    Oki merci, j'ai compris la logique. C'est comme la STL en C++ on dirait ^^

    Je travail dessus demain et je te tiens au courant.

    Merci

Discussions similaires

  1. [XSLT] Faire une boucle sur une variable [i]
    Par PoT_de_NuTeLLa dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 07/06/2010, 13h45
  2. [langage] if et boucle { ..}
    Par kacedda dans le forum Langage
    Réponses: 15
    Dernier message: 28/04/2003, 18h25
  3. [directsound] boucle de traitement de son
    Par gargle dans le forum DirectX
    Réponses: 5
    Dernier message: 24/03/2003, 11h47
  4. Sortir d'un progamme qui boucle ou qui refresh
    Par mikevador02 dans le forum C
    Réponses: 12
    Dernier message: 14/12/2002, 10h38
  5. Réponses: 2
    Dernier message: 29/05/2002, 21h43

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