我的页面上有一个绑定到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事件中执行 - 但这样做会导致错误。
提前谢谢
答案 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数据绑定时,可能会清除它。