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 :

Utilisation d'un dropdownlist et d'un bouton dans un repeater


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de lou87
    Profil pro
    Inscrit en
    Février 2006
    Messages
    368
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 368
    Par défaut Utilisation d'un dropdownlist et d'un bouton dans un repeater
    Bonjour,

    Comme indiqué dans mon titre je cherche à utiliser un dropdownlist et un bouton qui se trouve dans mon repeater. J'ai remarqué assez rapidement qu'il ne reconnaissait ni l'un ni l'autre lorsque l'on veut les utiliser directement dans le code behind.

    Je me suis un peu renseignée et apparemment je pourrais les utiliser dans le repeater itemCommand, et findControl si j'ai bien compris....

    Cependant je n'arrive pas à le faire...

    Dans mon repeater se trouve les données d'une table de ma base de données et avec l'aide de mon dropdownlist et de mon bouton j'aimerais en modifier un élément...

    Quelqu'un pourrait-il m'aiguiller sur la bonne voie, s'il vous plaît ?
    Me mettre un exemple si c'est possible ?

    En vous remerciant.

    Bonne journée.

  2. #2
    Membre éclairé Avatar de lou87
    Profil pro
    Inscrit en
    Février 2006
    Messages
    368
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 368
    Par défaut
    Personne ne peut vraiment m'aider ?

    J'ai réussi à trouver cette exemple et essayé de l'adapter à mon dropdownlist, mais sans succès pour l'instant...

    http://smartdev.wordpress.com/2009/0...of-a-repeater/

  3. #3
    Membre chevronné Avatar de Redouane
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    435
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 435
    Par défaut
    Bonjour,

    Si tu veux juste savoir comment faire, pour récupérer la valeur de ton dropDownList au sein du Repeater, lors du click sur le bouton; je pense que tu peux le faire dans le ItemCommand du ton repeater :

    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
    protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
            {
                if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
                {
                    DropDownList ddl = (DropDownList)e.Item.FindControl("TonDropDownList");
     
                    // Tu récupère la valeur sélectionnée (le texte ou la valeur associée)
                    //    ddl.SelectedItem.Text
                    // ou ddl.SelectedItem.Value
                    if (ddl != null && ddl.SelectedItem != null)
                        Variable = ddl.SelectedItem.Value;
     
                    // Faire des traitements avec la variable récupérée
                    // ...............
                }
            }
    ci ce que tu veux, non ?

  4. #4
    Membre éclairé Avatar de lou87
    Profil pro
    Inscrit en
    Février 2006
    Messages
    368
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 368
    Par défaut
    Bonjour Redouane !

    Je pense que c'est ça. J'essaie ça tout de suite, et je reviens vous en informer.

    Et merci pour ta réponse !


    Edit : Je pense que ça fonctionnerait.

    Cependant une fonction me fait une erreur, toujours la même fonction pour pas changer, simplement le type d'erreur n'est pas le même.

    Voici l'erreur :
    L'exception InvalidCastException n'a pas été gérée par le code utilisateur.
    Échec de la conversion de la valeur de paramètre d'un RepeaterCommandEventArgs en un Int32.
    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    protected void ListCE_ItemCommand(object source, RepeaterCommandEventArgs e)
            {
                string status;
    
                if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
                {
                    DropDownList ddl = (DropDownList)e.Item.FindControl("ddl_status");
    
                    // Tu récupère la valeur sélectionnée (le texte ou la valeur associée)
                    if (ddl != null && ddl.SelectedItem != null)
                        status = ddl.SelectedItem.Text;
                    // Faire des traitements avec la variable récupérée
    
    
                    SqlConnection connexion = new SqlConnection(System.Configuration.ConfigurationManager.
                    ConnectionStrings["connectString1"].ConnectionString);
                    connexion.Open();
    
                    status = ddl.SelectedItem.Text;
    
                    //string status = Variable;
    
                    // requête Insert/Update des informations dans la table du mois en cours REPLACE autorisé avce MySql ;)
    
                    string query = "Update table SET status = @status WHERE (id_CE = @id_CE)";
    
                    //lbl_requete.Text = query;
    
                    using (SqlConnection Connection = new SqlConnection(System.Configuration.ConfigurationManager.
                    ConnectionStrings["connectString1"].ConnectionString))
                    {
    
                        SqlCommand cmdUpdate = new SqlCommand(query, Connection);
    
                        // commande SQL insertion dans table
    
                        cmdUpdate.CommandText = query;
    
    
                        // "paramètrage" des paramètres
                        cmdUpdate.Parameters.Add("@id_CE", SqlDbType.Int); // Type à remplacer par le type adéquat
                        cmdUpdate.Parameters.Add("@status", SqlDbType.VarChar,50); // Type à remplacer par le type adéquat
    
                        // récupèration des valeurs des paramètres
    
                        cmdUpdate.Parameters["@id_CE"].Value = e; // ..
                        cmdUpdate.Parameters["@status"].Value = "" + status + "";
    
    
                        // connexion
    
                        Connection.Open();
    
                        if (Connection.State == System.Data.ConnectionState.Open)
    
                        // si la connexion est ouverte
                        {
    
                            // et on fait la mise à jour
                            cmdUpdate.ExecuteNonQuery();
    
                            // on met à jour le gridview
                            ListCE.DataBind();
    
                            // fermeture connection
    
                            Connection.Close();
    
                        }
    
                    }
                }
    J'ai beau chercher si un des éléments de ma requête n'était pas dans le bon format mais il me semble que non...

    Et puis je me suis posé la question si la variable e de RepeaterCommandEventArgs n'en était pas la cause, car je l'utilise comme index par la suite pour mettre à jour les données dans ma table.

    Mais il y a là encore un petit problème car e commence à 0 et ma table à 1.

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 114
    Par défaut
    Bonsoir.

    La ligne qui pose problème semble être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cmdUpdate.Parameters["@id_CE"].Value = e;
    Elel devrait plutot ressembler à ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cmdUpdate.Parameters["@id_CE"].Value = int.Parse(e.CommandArgument)
    En prenant comme hypothèse que la valeur de id_CE est donnée comme argument de la commande.

  6. #6
    Membre chevronné Avatar de Redouane
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    435
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 435
    Par défaut
    Bns,

    Je rejoins Ketan à ce qu'il a dit, et je te pose une question.
    Ton @id_CE est la valeur de l'élément sélectionné de ton DropDownList, l'index de la ligne ou une autre valeur ?

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

Discussions similaires

  1. [AJAX] Récupérer le clic bouton dans un Repeater
    Par Pelote2012 dans le forum jQuery
    Réponses: 7
    Dernier message: 20/02/2013, 09h40
  2. attendre un click sur bouton dans boucle repeat/until
    Par sp2308 dans le forum Débuter
    Réponses: 4
    Dernier message: 11/03/2011, 22h36
  3. Un bouton dans un Repeater
    Par zooffy dans le forum ASP.NET
    Réponses: 2
    Dernier message: 25/03/2010, 15h49
  4. Utilisation des boutons dans un formulaire
    Par jackyjoke dans le forum IHM
    Réponses: 1
    Dernier message: 28/11/2006, 14h25

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