2009-10-02 7 views
0

Je ne peux pas obtenir la valeur sélectionnée d'une liste des éléments générés par programmation:Mise en valeur sélectionnée à partir d'un ASP.NET DropDownList

Protected Sub ddlMMMYY2_PreRender(ByVal sender As Object, ByVal e 
           As System.EventArgs) Handles ddlMMMYY2.PreRender 
    If Not Page.IsPostBack Then 
     'Value= 08.2009 Text=Aug 09 
     Dim d As Date 
     d = Now 

     Dim myDay As Date 
     Dim myDayStr As String 
     Dim myDayValue As String 

     Dim i As Integer 
     For i = 0 To 15 
      myDay = d.AddMonths(i) 
      myDayValue = myDay.ToString("MM.yyyy") 
      myDayStr = myDay.ToString("MMMM yyyy") 

      Dim item As ListItem = New ListItem 
      item.Text = myDayStr 
      item.Value = myDayValue 
      Me.ddlMMMYY2.Items.Add(item) 
     Next 

     If Not Request.QueryString("Abreise") Is Nothing Then 
      Dim Anreise As String = Request.QueryString("Abreise") 
      Dim myArray As Array 
      myArray = Split(Anreise, ".") 
      Me.ddlMMMYY2.Items.FindByValue(myArray(1).ToString & "." 
             & myArray(2).ToString).Selected = True 
     End If 

    End If 
End Sub 

Si je tente d'obtenir une valeur à partir d'un DropDownList statique, <asp:listitem> œuvres.

Que puis-je faire?

Répondre

1

Vous devez ajouter les éléments à la zone de liste déroulante en utilisant soit en remplaçant les contrôles CreateChildChild, soit en remplaçant la méthode OnInit. L'ajout des éléments à la liste à l'aide de PreRender signifie qu'il est trop tard pour que l'état d'affichage connecte les éléments de liste que vous avez entrés avec la valeur renvoyée par le navigateur.

Aussi, si vous utilisez soit la méthode Init ou CreateChildControls les valeurs que vous entrez dans la liste déroulante sont enregistrés par l'état d'affichage afin envelopper la chose trou dans un si

espoir qui fait sens (IsPostBack!): -

1

Assurez-vous que ViewState est activé pour DropDownList. Vous devrez peut-être redéfinir DropDownList avant de pouvoir obtenir la valeur sélectionnée. Comme l'a dit Michael Edwards, ViewState a déjà été sauvegardé avant que l'événement PreRender ne soit déclenché.

Questions connexes