2010-12-13 46 views
1

J'ai une liste déroulante databound sur une page, où dans la page_load j'ai défini la valeur selectedValue (à l'intérieur d'un 'is isPostBack').get selectedValue() de dropDownList après avoir défini la valeur

Bien que la page affiche bien et affiche l'élément correct tel que sélectionné .. dans le page_load si j'essaie d'obtenir la valeur selectedValue() et l'afficher à l'écran, j'obtiens toujours null ... selectedIndex est -1.

J'ai un bouton qui, quand on clique, fait référence à la valeur selected de ce ddl, et ici il parcourt le résultat attendu .. alors pourquoi je ne peux pas le voir immédiatement après l'avoir défini, alors que page_load?

cheers :)

modifier: le code ..

déclaration ddl

<asp:DropDownList runat="server" ID="dlCountryList" DataSourceID="dsCountryList" 
       DataValueField="countrylistid" DataTextField="description"> 
</asp:DropDownList> 

et le Page_Load

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    dlCountryList.SelectedValue = "GR" 
    Response.Write("*" + CStr(dlCountryList.SelectedIndex) + "*") 
End Sub 
+0

Pouvez-vous coller le balisage de la liste déroulante et la section du code C#/VB de Page_Load? – jwiscarson

+0

Essayez d'appeler manuellement la méthode DataBind() dll après avoir défini la valeur sélectionnée. –

+0

@jwiscarson - voir le code ci-dessus –

Répondre

1

appeler manuellement la méthode DataBind() de la baisse après avoir réglé la valeur sélectionnée. La propriété SelectedValue n'est pas une propriété get/set ordinaire du contrôle. En la définissant, vous ne définissez que l'attribut "flag" utilisé lorsque la liste déroulante est liée.

Par défaut, il est lié après l'événement Page_Load (ne sait pas exactement quel événement) mais il est également possible de l'appeler manuellement.

+0

Merci :) assez simple j'ai juste besoin de m'en souvenir! –

+0

@Tabloo pas de problème .. après avoir creusé avec Reflector, j'ai vu que le paramètre SelectedValue assignait la propriété Selected de l'élément correct dans la liste déroulante comme true, mais ne définissait pas SelectedIndex de la liste déroulante, et le getter SelectedValue est simplement : 'return this.Items [selectedIndex] .Value' (bien sûr, vérifiez avant que selectedIndex ne soit -1), cela explique pourquoi il est toujours nul. –

+0

J'avais supposé que c'était un problème de cycle de vie de la page - belle découverte! – jwiscarson