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 :
Je passe bien dans mon événement côté serveur.
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") %>' />
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.
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... }
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) :
D'ailleur voilà le code html de ma liste :
Code : Sélectionner tout - Visualiser dans une fenêtre à part ddl.SelectedIndex = ddl.Items.IndexOf(ddl.Items.FindByValue("320"));
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.
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>
Auriez-vous une idée qui me permettrait de résoudre ce problème ?
Merci par avance de vos réponses !
Partager