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 :

[VB.NET] Problème de répétition dans une DropDownList


Sujet :

ASP.NET

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 9
    Points : 8
    Points
    8
    Par défaut [VB.NET] Problème de répétition dans une DropDownList
    Bonjour, j'ai mit en place des DropDownList sur ma page qui sont alimenter par une requête SQL. Ca marche mais le problème et que les résultats sont affichés en boucle.

    Par exemple, avec ma table "sites" qui contient "créteil" et "paris", ma dropdownlist "ddlsite" va m'afficher

    créteil
    paris
    créteil
    paris
    créteil
    paris
    créteil
    etc......

    Quand je fais l'opération pour une seule DropDownList je n'ai pas ce problème, mais dès que je l'applique à plusieur dropdownlist ca ne marche plus.

    Auriez vous une explication???

    Voici mon 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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Sub Page_Load (Sender As Object, e As EventArgs)
     
        Dim dReader As System.Data.SqlClient.SqlDataReader
        Dim MyConnection As System.Data.SqlClient.SqlConnection
        Dim connectionString As String
     
        MyConnection = New System.Data.SqlClient.SqlConnection
        MyConnection.ConnectionString = "Server=(local); Initial Catalog='intervention'; Trusted_Connection=True;"
        MyConnection.Open()
     
        Dim SqlCommand1 As System.Data.SqlClient.SqlCommand
        SqlCommand1 = new System.Data.SqlClient.SqlCommand
        SqlCommand1.Connection = MyConnection
        SqlCommand1.CommandText = "Select code_site, lib_site, code_service, lib_service, code_nature, lib_nature from sites, services, nature"
     
        dReader = SqlCommand1.ExecuteReader()
        ddlsite.DataSource = dReader
        ddlsite.DataTextField = "lib_site"
        ddlsite.DataValueField = "code_site"
        ddlsite.DataBind()
        dReader.Close()
        dReader = SqlCommand1.ExecuteReader()
        ddlservice.DataSource = dReader
        ddlservice.DataTextField = "lib_service"
        ddlservice.DataValueField = "code_service"
        ddlservice.DataBind()
        dReader.Close()
        dReader = SqlCommand1.ExecuteReader()
        ddlplatef.DataSource = dReader
        ddlplatef.DataTextField = "lib_nature"
        ddlplatef.DataValueField = "code_nature"
        ddlplatef.DataBind()
        dReader.Close()
     
        MyConnection.Close()
     
     
    End sub

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Points : 1 046
    Points
    1 046
    Par défaut
    Erreur toute bête : Tu ne dois remplir tes drop down list que lors de la premiere demande de la page, et pas à chaque post back (ou au moins il faut vider celles-ci à chaque fois). Donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if( ! Page.IsPostback )
    {
        //remplissage des ddl
    }
    Attention, le premier admin qui passe va te rediriger vers la recherche dans les archives

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    J'ai essayé de faire comme tu ma dit, mais cela ne fonctionne pas, j'ai toujours le même problème dès l'ouverture de ma page :
    Voici un screen qui permet de bien voir le problème
    www.btscam.fr.st

    et voici le code avec la prise en compte du postback :

    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
    36
    Sub Page_Load (Sender As Object, e As EventArgs)
     
        Dim dReader As System.Data.SqlClient.SqlDataReader
        Dim MyConnection As System.Data.SqlClient.SqlConnection
        Dim connectionString As String
     
        MyConnection = New System.Data.SqlClient.SqlConnection
        MyConnection.ConnectionString = "Server=(local); Initial Catalog='intervention'; Trusted_Connection=True;"
        MyConnection.Open()
     
        Dim SqlCommand1 As System.Data.SqlClient.SqlCommand
        SqlCommand1 = new System.Data.SqlClient.SqlCommand
        SqlCommand1.Connection = MyConnection
        SqlCommand1.CommandText = "Select sites.code_site, sites.lib_site, services.code_service, services.lib_service, nature.code_nature, nature.lib_nature from sites, services, nature"
     If Not IsPostBack Then
        dReader = SqlCommand1.ExecuteReader()
        ddlsite.DataSource = dReader
        ddlsite.DataTextField = "lib_site"
        ddlsite.DataValueField = "code_site"
        ddlsite.DataBind()
        dReader.Close()
        dReader = SqlCommand1.ExecuteReader()
        ddlservice.DataSource = dReader
        ddlservice.DataTextField = "lib_service"
        ddlservice.DataValueField = "code_service"
        ddlservice.DataBind()
        dReader.Close()
        dReader = SqlCommand1.ExecuteReader()
        ddlplatef.DataSource = dReader
        ddlplatef.DataTextField = "lib_nature"
        ddlplatef.DataValueField = "code_nature"
        ddlplatef.DataBind()
        dReader.Close()
     
        MyConnection.Close()
       End if

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Points : 1 046
    Points
    1 046
    Par défaut
    AH bon, dans ce cas tu es sur que ce n'est pas simplement ce que tu as en base qui est démultiplié ?

  5. #5
    Futur Membre du Club
    Inscrit en
    Février 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    oui oui sur et certain, dans ma table "site" je n'ai que "créteil" "paris" "versaille"

  6. #6
    Futur Membre du Club
    Inscrit en
    Février 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    C'est bon le problème est résolu, merci beaucoup


    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    Sub Page_Load (Sender As Object, e As EventArgs)
     
        Dim dReader As System.Data.SqlClient.SqlDataReader
        Dim MyConnection As System.Data.SqlClient.SqlConnection
        Dim connectionString As String
     
        MyConnection = New System.Data.SqlClient.SqlConnection
        MyConnection.ConnectionString = "Server=(local); Initial Catalog='intervention'; Trusted_Connection=True;"
        MyConnection.Open()
     
        Dim SqlCommand1 As System.Data.SqlClient.SqlCommand
        SqlCommand1 = new System.Data.SqlClient.SqlCommand
        SqlCommand1.Connection = MyConnection
        SqlCommand1.CommandText = "Select code_site,lib_site from sites"
        Dim SqlCommand2 As System.Data.SqlClient.SqlCommand
        SqlCommand2 = new System.Data.SqlClient.SqlCommand
        SqlCommand2.Connection = MyConnection
        SqlCommand2.CommandText = "Select code_service,lib_service from services"
        Dim SqlCommand3 As System.Data.SqlClient.SqlCommand
        SqlCommand3 = new System.Data.SqlClient.SqlCommand
        SqlCommand3.Connection = MyConnection
        SqlCommand3.CommandText = "Select code_nature,lib_nature from nature"
     
     
     
        dReader = SqlCommand1.ExecuteReader()
        ddlsite.DataSource = dReader
        ddlsite.DataTextField = "lib_site"
        ddlsite.DataValueField = "code_site"
        ddlsite.DataBind()
        dReader.Close()
     
        dReader = SqlCommand2.ExecuteReader()
        ddlservice.DataSource = dReader
        ddlservice.DataTextField = "lib_service"
        ddlservice.DataValueField = "code_service"
        ddlservice.DataBind()
        dReader.Close()
     
        dReader = SqlCommand3.ExecuteReader()
        ddlplatef.DataSource = dReader
        ddlplatef.DataTextField = "lib_nature"
        ddlplatef.DataValueField = "code_nature"
        ddlplatef.DataBind()
        dReader.Close()
        MyConnection.Close()
     
     
     
    End sub

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 14/11/2011, 15h52
  2. Réponses: 15
    Dernier message: 27/09/2006, 11h46
  3. Réponses: 1
    Dernier message: 04/09/2006, 20h51
  4. Réponses: 1
    Dernier message: 05/05/2006, 14h37
  5. [Vb.net] Indexé un objet crée dans une boucle
    Par picpic dans le forum Windows Forms
    Réponses: 10
    Dernier message: 17/12/2003, 14h37

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