2011-04-08 56 views
2

清除我有綁定到我的網頁上一個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

如果你有「不是Page.IsPostBack」那麼它不會在回發中運行! – 2011-04-08 23:00:25

+0

那麼,它實際上不應該在回發中運行。該列表應該在第一頁加載時更新,然後保留這些值......無論如何 - 即使我關閉「if not page.ispostback」,它也不起作用。 – Ran 2011-04-08 23:07:42

回答

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控件的回發後數據綁定將被清除。

+0

謝謝。我會嘗試的。 – Ran 2011-04-08 23:13:16

+0

蒂姆 - 它像一個魅力。謝謝!! – Ran 2011-04-08 23:19:42

+0

@Ran:記得標記爲已回答;)很高興我能提供幫助。 – 2011-04-08 23:20:55