2010-01-07 4 views
0

J'ai deux pages .aspx très similaires. Les deux contiennent un contrôle DropDownList. La EnableViewState Les deux contrôles DropDownList est définie sur False:DropDownList.SelectedItem parfois nul, parfois pas après la publication, EnableViewState = False

<asp:DropDownList ID="ddl" runat="server" EnableViewState="False" /> 

Il y a un LinkButton sur les deux pages. Dans le gestionnaire btn_Click, si j'essaie d'accéder à la propriété ddl.SelectedItem (qui, pour autant que je sache, doit être null à cause de EnableViewState = False, ai-je raison?), Elle est null sur une page, mais pas null (il a une valeur correcte) sur l'autre page. Pouvez-vous me donner des indications sur comment cela peut-il être possible?

string txt = ddl.SelectedItem.Text; // SelectedItem sometimes null, other times not 

La différence entre ces deux pages de les listes déroulantes est, que dans un cas, la liste déroulante est remplie en utilisant le contrôle CascadingDropDown de ajaxToolkit (dans ce cas, SelectedItem est non nul, malgré la propriété EnableViewState définie sur false), dans le Dans un autre cas, les éléments de la liste déroulante sont remplis dans la propriété Page_Load, dans et if-block, vérifiant si IsPostBack est faux (les éléments ne sont remplis qu'à la première requête, je n'en aurai pas besoin après la publication).

Merci.

Répondre

1

Si vous en avez besoin, vous devez le réinitialiser à null lors du chargement de la page ou d'un événement similaire.

+0

C'est l'information que je n'avais pas, merci beaucoup. En fait, c'était l'inverse. Je convertissais CascadingDropDown dans une application "over-ajaxified" dans un DropDown normal et je me demandais, comment l'accès à la propriété SelectedItem pouvait-il jamais fonctionner avec EnableViewState étant faux. Merci, Stephen. – michalstanko

+0

La boîte à outils de contrôle présente encore de nombreuses incohérences inattendues comme celle-ci. –

0

Si vous avez quelque chose qui remplit la liste déroulante via JavaScript, alors ASP.NET verra cette valeur, quelle que soit la façon dont il est arrivé là. CascadingDropDown n'honore pas le paramètre enable viewstate.

0

On dirait que l'index sélectionné est renvoyé au serveur lorsque vous modifiez la valeur; la propriété d'index sélectionnée est appliquée une fois que les éléments sont appliqués dans la liste, donc si vous n'avez aucun élément, je ne crois pas qu'il s'applique jusqu'à ce que certains éléments soient ajoutés à la liste. Ainsi, si vous liez à nouveau la liste et qu'une valeur est sélectionnée dans la liste, et que vous reliez la liste déroulante, l'index sélectionné sera appliqué. Cela pourrait être possible.

HTH

Questions connexes