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 :

DropDownList OnSelectedIndexChanged - Remettre l'ancienne valeur en cas d'erreur


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de blasil64
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 324
    Par défaut DropDownList OnSelectedIndexChanged - Remettre l'ancienne valeur en cas d'erreur
    Bonjour à tous,
    J'ai un panel qui contient une ListView. Cette dernière contient dans chaque itemTemplate une dropdowlist, deux textbox et un bouton de suppression.

    Chaque dropdownlist de chaque élément du listview contienne les mêmes données récupérés depuis une source, mais les valeurs sélectionnés sont différentes. Certaines valeurs peuvent être identiques aussi.

    J'ai une contrainte, sur certaines valeurs de ma dropdownlist, je ne dois pas pouvoir avoir deux lignes qui contiennent cette valeur (je vous passe les détails de ma contrainte)...

    J'ai lié ma dropdownlist avec l'événement OnSelectedIndexChanged et mis l'autoPostback à True dans le design :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <asp:DropDownList ID="ddlLinkToDestinationParent" CssClass="ddl-link-to ddl-link-to-child" runat="server"  AutoPostBack="True" OnSelectedIndexChanged="ddlNewConsumptionLinkToDestinationParent_OnSelectedIndexChanged" data-headcount='<%# Eval("HeadCount") %>' />
    Je passe bien dans mon événement côté serveur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var ddl = sender as DropDownList;
     
                if (IsDestinationSelected(ddl))
                {
                    // Affichage d'un message d'erreur
                    // Il faut mettre à jour la dropdownlist pour avoir l'ancienne valeur visuellement...
     
                }
    La méthode IsDestinationSelected est celle qui me permet de récupérer s'il y a déjà une dropdownlist avec cette valeur et qui répond à ma contrainte.

    Que mettre après le message d'erreur ?

    J'ai essayé différentes solutions, mais rien qui me convienne (320 étant juste pour tester, mais correspond à un item de ma liste) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ddl.SelectedIndex = ddl.Items.IndexOf(ddl.Items.FindByValue("320"));
    D'ailleur voilà le code html de ma liste :
    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
    <select name="ctl00$Main$lvSetConsumptionsSite$ctrl1$ddlLinkToDestinationParent" onchange="javascript:setTimeout('__doPostBack(\'ctl00$Main$lvSetConsumptionsSite$ctrl1$ddlLinkToDestinationParent\',\'\')', 0)" id="ctl00_Main_lvSetConsumptionsSite_ctrl1_ddlLinkToDestinationParent" class="ddl-link-to ddl-link-to-child" data-headcount="0">
    		<option value="">--- Type de consom° ---</option>
    		<option value="870">petit dejeuner 1 siege</option>
    		<option value="877">petit dejeuner 2 (siege)</option>
    		<option value="133">dejeuner 1 siege</option>
    		<option value="26">dejeuner 2 (siege)</option>
    		<option value="237">dejeuner 3 (siege)</option>
    		<option value="238">dejeuner 4 (siege)</option>
    		<option value="239">dejeuner 5 (siege)</option>
    		<option value="241">dejeuner 6 (siege)</option>
    		<option value="288">dejeuner 7 (siege)</option>
    		<option value="852">pique nique (gouter 1 siege)</option>
    		<option value="507">diner 1 (siege)</option>
    		<option value="883">test 20/09 (diner - siege)</option>
    		<option value="136">Goûter 2 (siege)</option>
    		<option value="134">Resident (pas dans CM)</option>
    		<option value="24">pertes (diner - siege)</option>
    		<option value="25">cessions (pas dans CM)</option>
    		<option value="201">Taxes et Frais divers (pas dans CM)</option>
    		<option value="227">Emballages (consignes et déconsignes)</option>
    		<option value="135">Diners de luxe (pas dans CM)</option>
    		<option selected="selected" value="320">ajustement de stock</option>
    		<option value="334">autre</option>
    		<option value="745">HAPPY</option>
    		<option value="876">consommation</option>
    		<option value="802">test AB Cons 3105 01</option>
    		<option value="869">panier repas (pas dans CM)</option>
    		<option value="915">1 dest. siege</option>
    		<option value="953">collation de 11h</option>
     
    	</select>
    Du coup, vu que la mise à jour ne se fait pas au niveau de ma dropdowlist, et que j'essaie de lui changer de valeur en mode code, il repasse en boucle dans mon événement.

    Auriez-vous une idée qui me permettrait de résoudre ce problème ?

    Merci par avance de vos réponses !

  2. #2
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Salut,

    Pourquoi ne pas utiliser un HiddenField pour enregistrer la valeur précédemment sélectionnée?

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  3. #3
    Membre éclairé Avatar de blasil64
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 324
    Par défaut
    J'ai un HiddenField pour chaque ligne de mon ListView contenant la valeur sélectionnée de base.

    Mais là n'est pas le problème, je n'arrive pas à annuler la valeur que j'ai pu sélectionner afin de remettre celle de l'ancienne valeur, celle de l'hiddenfield par exemple.

    Merci d'avance pour votre aide !

  4. #4
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Et un truc du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var temp = TaListeDeroulante.Items.FindByValue(TonHiddenField.Value);
    if (temp != null)
    {
        temp.Selected = true;
    }
    "Winter is coming" (ma nouvelle page d'accueil)

  5. #5
    Membre éclairé Avatar de blasil64
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 324
    Par défaut
    Bonjour,
    Merci pour ta réponse, mais cela ne fonctionne pas non plus. Est-ce le fait que ce soit un listview contenu dans un updatepanel ? Je ne sais pas.

    J'ai opté pour une autre solution, qui fonctionne.

    Celle-ci consiste à récupérer un dictionnaire au chargement de ma page afin d'avoir la liste des éléments de mes dropdownlist (leur id, correpodant à la value des items de ma dropdownlist) et la notion de s'ils sont sous contrainte ou pas.

    Ensuite, niveau JS, je peux faire mon petit parcourt et si je dois remettre la valeur d'origine, le code suivant fait l'affaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('#maDropDownList').val(myOldValue);
    Je sais, pas de validation côté serveur, mais dans mon cas, cela me suffit largement.

    Merci pour votre aide !

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

Discussions similaires

  1. Ancienne valeur lors d'un Trigger Update ?
    Par Jérôme Lambert dans le forum Développement
    Réponses: 1
    Dernier message: 11/12/2006, 12h44
  2. Historiser des modifications et les anciennes valeurs
    Par el_quincho dans le forum Access
    Réponses: 4
    Dernier message: 29/05/2006, 16h49
  3. Remettre l'ancienne valeur d'un contrôle
    Par Michel DELAVAL dans le forum Access
    Réponses: 1
    Dernier message: 11/01/2006, 10h34
  4. Réponses: 7
    Dernier message: 15/03/2005, 14h44

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