2009-10-02 91 views
0

我不能让项目的程序生成列表中选定的值:入门选定值从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 

如果我尝试从静态DropDownList<asp:listitem>作品得到的值。

我该怎么办?

回答

1

您需要使用重写CreateChildChild控件或重写OnInit方法将项添加到下拉框中。使用PreRender将项目添加到列表意味着视图状态将您输入的列表项与浏览器返回的值连接起来为时已晚。

此外,如果您使用的init方法的CreateChildControls你输入这些值的下拉列表中的视图状态保存,以便包裹在孔事情如果

希望是有道理的(的IsPostBack!): - )

1

确保为DropDownList启用了ViewState。您可能需要重新绑定DropDownList,然后才能获取选定的值。

正如Michael Edwards所说 - ViewState在引发PreRender事件之前已经保存。

相关问题