8
votes

ASP.NET Dropdownlist réinitialise Selectedexindex après la publication

Après avoir fait beaucoup de recherches en ligne, je suis toujours excitée par ce problème. J'ai une page qui charge les noms et le nombre de catégories dans une liste déroulante. Je ne fais que cela si ! (Page.ispostback) . Lorsque Autopostback incendie le sélectionnéexindex = 0 . J'ai essayé plusieurs choses différentes. Voici mon code:

page xxx

voici le code d'extrémité arrière. xxx

je veux juste Soyez capable de remplir le formulaire en fonction de l'index sélectionné, mais je ne peux pas sembler avoir la bonne réponse. Toute aide est appréciée.


7 commentaires

Je suppose que vous avez ViewState activé? Avez-vous vérifié la demande de voir quelle est la valeur renvoyée pour ce contrôle? Combien d'articles sont dans la liste déroulante?


Je suis assez certain que je rencontre cette question auparavant. Pouvez-vous essayer de faire le panneau de mise à jour conditionnel et de définir un déclencheur de post-back async sur votre événement modifié à votre liste déroulante?


En ce moment, il y a 4 articles dans la liste déroulante. Je ne sais pas ce que vous entendez en vérifiant la demande de voir quelle valeur est renvoyée. J'ai vérifié la DDLCategory.Selectedex dans la sélection signaléeExchanged, et c'est toujours 1.


J'ai changé le panneau de mise à jour en conditionnel et ajouté la gâchette. Cela n'a rien changé. Lorsque je modifie la sélection DropdownList, il redevient automatiquement au premier élément de la liste.


Est-ce que GetCatégories () est appelé de n'importe où ailleurs?


Non ce n'est pas le cas. J'ai posté tous les codes de la page, moins quelques détails inutiles que 100% n'affectent pas le code tel qu'il est.


@Tyler Qu'est-ce qu'en demande?: Mettez un point d'arrêt sur l'événement de publication et voyez ce qui est dans le contexte.Request - spécifiquement à faire avec ce contrôle (devrait pouvoir le trouver à l'aide de l'ID client de la commande). Si vous aimez le poster ici, donc je peux voir.


8 Réponses :


1
votes

Avez-vous ViewState activé ou désactivé? SELECTELLINDEX est à base de zéro, il s'agissait donc de réinitialiser, je pense qu'il serait réglé à zéro.

Aussi, qu'est-ce que les autres propriétés de la liste déroulante sont définies? La valeur sélectionnée est-elle correcte?

Essayez un navigateur différent. J'ai eu un problème avec des chutes en cascade où il ne tirée pas / se comporter correctement dans Firefox.


3 commentaires

ViewState est activé. Si je le désactive, ma liste est effacée sur le post-plan.


Je l'ai essayé dans Internet Explorer et je reçois le même problème. À l'heure actuelle, la sélection sélectionnée n'est même pas tirée car la liste déroulante se réinitialise à la sélection supérieure lorsque je le change.


J'ai découvert le problème. Les valeurs utilisées à partir de mon relevé SQL contenaient des valeurs répétées. Pour une raison quelconque, cela causait toute la chose de dysfonctionnement de manière étrange. En veillant à ce que les valeurs nulles sont devenues 0, le code a commencé à fonctionner parfaitement. Merci pour l'aide de tout le monde.



4
votes

J'ai découvert le problème. Les valeurs utilisées à partir de mon relevé SQL contenaient des valeurs répétées. Pour une raison quelconque, cela a permis à toute la chose de dysfonctionnement de manière étrange, ce qui l'a fait de sorte que chaque fois que j'ai sélectionné un LISTITEM, toute la liste réinitialisait. En veillant à ne pas répéter aucune valeur, le code a commencé à fonctionner parfaitement. Merci pour l'aide de tout le monde.


0 commentaires

14
votes

Ajouter appenddatabounditems = "true" pour la liste déroulante


3 commentaires

Cela a totalement réparé mon problème !!! J'ai peuplé mon drawndowlist.DataSource d'une arrayliste. cela doit avoir confondu les indices. Réglage des appendatabounditems corrigé il wooooo! o !! #


Life Saver :) Merci!


Agréable! Il corrige toutes mes déposées!



0
votes

J'ai rencontré le même problème, mon État de StateView de My DropdownList StateView Aller à l'index 1 à droite après un événement de publication d'un autre contrôle. Ma suggestion assurez-vous simplement que votre liste déroulante ne sont pas vides .

J'espère que c'est aider quelqu'un .... :)


1 commentaires

S'il vous plaît élaborer votre réponse. La question indique que la question suggère qu'il existe des valeurs vides.



4
votes

Assurez-vous que vos champs de valeur sont uniques pour chaque élément de liste déroulante. Si chaque élément a la même valeur, il sera par défaut sur Index 0.


1 commentaires

Je tire mes cheveux tout l'après-midi en essayant de comprendre cela. J'avais deux listitems avec le même valeur = "- 1" , en modifiant l'un d'entre eux résolu le problème.



1
votes

Cela m'est arrivé lorsque vous essayez d'utiliser une valeur de colonne combinée pour le DataValuefield. Par exemple:

La procédure stockée a été écrite comme ceci: p>

 With ddl
     .DataTextField = "Description"
     .DataValueField = "Value"
     .DataSource = ds
     .DataBind() 
 End With


0 commentaires

1
votes

J'ai eu des difficultés avec cela aussi, j'ai essayé activerviewstate = "true" ViewStaTemode = "Activé" Mais ce n'est pas nécessaire en fait, il suffit d'ajouter un ISPOSTBACK dans la page_LOAD un événement. N'oubliez pas d'ajouter un ispostback, c'est-à-dire ... xxx


0 commentaires

1
votes

Vous devez charger la liste sur DropdownList SI NON ISPOSTBACK

EXEMPLE CODE: P>

if (!IsPostBack)
{
   //fill here
}


0 commentaires