在页面回发中清除下拉列表

时间:2011-04-08 22:53:37

标签: asp.net vb.net

我的页面上有一个绑定到SqlDataSource的FormView。 FormView上的一个控件是DropDownList,它在Page_Load上填充(它正在填充特定文件夹中的文件名列表)。

页面首次加载时一切顺利。我能够查看文件列表,选择一个,然后在点击“保存”按钮时,将正确的文件名存储在数据库中。但是,当回发后页面刷新时 - DropDownList为空。

page_load事件的代码隐藏:

If Not Page.IsPostBack Then  
  loadImageList()  
  End If  

该子被称为:

Protected Sub loadImageList()  
        Dim SaveLocation As String = Server.MapPath("/images/)  
        Dim di As New IO.DirectoryInfo(SaveLocation)  
        Dim fls As IO.FileInfo() = di.GetFiles()  
        Dim fi As IO.FileInfo  
        Dim drl As DropDownList = FormView1.FindControl("DropDownList_files")  
        drl.Items.Clear()  
        For Each fi In fls  
            drl.Items.Add(fi.Name.ToString)  
        Next  
    End Sub 

我已经阅读了一些帖子,说这应该在page_init事件中执行 - 但这样做会导致错误。

提前谢谢

1 个答案:

答案 0 :(得分:2)

您应该处理FormView的DataBound事件并在那里填充DropDownList:

    Private Sub FormView1_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles FormView1.DataBound
        Select Case FormView1.CurrentMode
           Case FormViewMode.ReadOnly

           Case FormViewMode.Edit
              Dim DdlFiles= DirectCast(FormView1.FindControl("DropDownList_files"), DropDownList)
              Dim SaveLocation As String = Server.MapPath("/images/)  
              Dim di As New IO.DirectoryInfo(SaveLocation)  
              Dim fls As IO.FileInfo() = di.GetFiles()  
              Dim fi As IO.FileInfo  
              DdlFiles.Items.Clear()  
              For Each fi In fls  
                 DdlFiles.Items.Add(fi.Name.ToString)  
              Next  

              Case FormViewMode.Insert

         End Select
    End Sub

在回发后将FormView数据绑定时,可能会清除它。