[Resolu][ASP.NET 1.1] [C#] Perte des valeurs SelectedValue / SelectedIndex d'une drop down list

Bonjour à tous.
Mon problème du jour est assez compliqué, je vais essayé d’être le plus clair possible, et j’espère que quelques caïds de la zone pourront m’aider.

L’idée du truc est de faire un “formulaire générique” : je vais piocher dans la base de données du contenu pour mes drop down list (il peut y en avoir 1 ou N), et la valeur choisi dans la ddl i-1 permet de remplir le contenu de la ddl i.

Voilà comment je procède :

j’ai une fonction
loadParameters(arraylist previousValues)
avec dedans, en gros, une boucle qui me créer mes ddl de 0 à previousValues.Count
Quand je créer ces drop down lists, je les lies toutes aux meme evenement.

_ddlParamList_SelectedIndexChanged()
l’evènement en question, dans lequel je recupère les valeurs SelectedValue et SelectedIndex.
ensuite je rempli mon arraylist, et je rappelle loadParameters(…)

Les ddl sont placés dans un placeholder.

Donc la fonction loadParameters(…) est appelé 2 fois :

  • une fois dans le pageLoad (pageload tout court, pas dans le postback à cause du premier coup)
  • une fois dans le SelectedIndexChanged

Le problème est :
ça marche pour la première drop down list (je recupère bien les valeurs SelectedValue et SelectedIndex
mais pour les suivantes, l’evènement est bien déclenché, mais SelectedValue reste à “” et SelectedIndex à 0… soit les valeurs par défaut.

Je pense que ça vient du fait, que, à une étape i>0, LoadParameters soit appelé 2 fois :

  • je clique sur ma ddl
  • avec le autopostback ça me lance le page load -> appel de LoadParameters
  • l’evement est déclenché -> re appel de LoadParameters
    et avec les histoires de viewstate et tout (j’y connais rien là dedans), il ne voit pas la différence entre les drop down list, donc il peut pas récuperer les valeurs.
    Je me trompe ?

Si vous avez une idée je vous en serez eternellement reconnaissant. Moi je bloque!

Merci pour votre aide! :stuck_out_tongue:

J’ai fini par trouver une solution :

Pour résumer le problème : impossible de récuperer le SelectedIndex d’une drop down list créée dynamiquement, dans un evement selectedIndexChanged(…)

La solution est donc : lors de la création de la dropdown list, il faut ajouter un ID, et se souvenir de cet ID qqpart.

Ensuite, pour acceder à la dite dropdownlist, il faut faire un « findcontrol ».

Chez moi, les dropdown lists sont dans un placeholder, je fais donc : this.FindControl(« plhForms »).FindControl(currentID);
avec currentID mon ID que je recupère.

et là! automagiquement, on peut acceder à toutes les valeurs!