2009-07-30 6 views
1

Comment utiliser une liste déroulante sans autopostback = true.ASP.NET VS2008 C# - liste déroulante - publication

La valeur sur le serveur n'est pas modifiée en fonction de celle sélectionnée du côté client. Comme je l'ai déjà dit, je ne souhaite pas que pour chaque liste déroulante, l'autopostback déclenche un retour.

Répondre

2

Chaque fois que je l'ai perdu la valeur de la liste déroulante est parce que j'ai foiré et repeuplé la liste déroulante avant de manipuler le changement de valeur. Pour moi, ce sont les listes déroulantes que j'ai besoin de faire quelque chose de spécial avec comme ajouter des attributs d'item pour Javascript, etc. Ce sont des données qui doivent être ajoutées sur chaque chargement de page (alias données qui ne sont pas persistantes dans le menu déroulant les noms et les valeurs de chaque article). Dans ces cas, j'ai fait ce travail sur la charge, puis j'essaie de récupérer la valeur plus tard dans le cycle de vie de la page et DOH!

Voici le cycle de vie de la page:

http://msdn.microsoft.com/en-us/library/ms178472.aspx

dollars pour des beignets qui est ce qui se passe. Vous rechargez probablement les éléments avant de gérer tout événement de publication que vous utilisez pour saisir la valeur. Si vous faites cela et ne pouvez pas contourner ce flux de travail, enregistrez simplement l'index sélectionné au début de la logique qui remplit la liste déroulante, puis définissez l'index sélectionné de la liste déroulante avec cette valeur lorsque vous avez terminé.

2

il sera sauvegardé dans viewstate, donc la valeur sera correcte quand vous finissez par poster, et si vous êtes vraiment désespéré pour obtenir la valeur actuelle sans publication, javascript serait le moyen de le faire .

+0

Avez-vous des exemple, comment puis-je mettre en œuvre cela avec javascript? –

+0

http://blog.techsaints.com/2007/05/06/javascript-how-to-get-selected-item-in-dropdown-select-list/ est un bon exemple, je posterais simplement le code mais c'est tricher =] –

0

Vous devez vous assurer que vous remplissez uniquement la zone de sélection avec des options lors de la charge de la page initiale, et non à nouveau au cours de la postback

if (!this.Page.IsPostBack) { 
    //fill select box here 
} 
1

pire des cas, vous pouvez saisir la valeur juste à côté de l'objet de la demande:

string selectedID = Request[DropdownControl.UniqueID];