2011-09-15 53 views
0

我每次點擊刪除按鈕,複選標記一倍數量:VB.NET CheckBoxList的兩倍。爲什麼?

Public Class About 
Inherits System.Web.UI.Page 

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 

    Dim di As New IO.DirectoryInfo("C:\Images\") 
    Dim imageArray As IO.FileInfo() = di.GetFiles() 
    Dim image As IO.FileInfo 

    'clear imageArray 


    'list the names of all images in the specified directory 
    For Each image In imageArray 
     CheckBoxList1.Items.Add(image.Name) 
    Next 

End Sub 

Protected Sub btnDelete_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnDelete.Click 

    For count As Integer = 0 To CheckBoxList1.Items.Count - 1 
     If CheckBoxList1.Items(count).Selected Then 
      File.Delete("C:\Images\" & CheckBoxList1.Items(count).ToString) 
     End If 
    Next 

End Sub 

末級

的CheckBoxList的不刷新,使得我刪除的複選框從CheckBoxList的去除。我如何實現這一目標?謝謝!

+0

解決:Response.Redirect(「Delete.aspx」) – Bruno

回答

1

點擊一個按鈕,Page_Load中再次跑了,所以,增加了複選框的代碼跑第二次。

添加對Page.IsPostBack的檢查,並且只添加複選框,如果它不是回發。

If Not Page.IsPostBack Then 
    For Each image In imageArray 
     CheckBoxList1.Items.Add(image.Name) 
    Next 
End If 

(我希望的語法是正確的......不是用來VB)

+0

謝謝!如何以更新頁面刪除,我刪除的複選框? – Bruno

+0

@Bruno如果語句 –

+0

內添加CheckBoxList1.Items.RemoveAt(計數)當我的回答工作,這將是更正確遵循達維德Piras酒店的答案,因爲代碼的第一部分不需要如果複選框跑出沒有被添加。 –

0

Page_Load事件處理程序的全部內容,必須在你的情況下,只執行一次,所以把它改寫這樣的:

If Not IsPostBack Then 

    Dim di As New IO.DirectoryInfo("C:\Images\") 
    Dim imageArray As IO.FileInfo() = di.GetFiles() 
    Dim image As IO.FileInfo 

    'clear imageArray 


    'list the names of all images in the specified directory 
    For Each image In imageArray 
     CheckBoxList1.Items.Add(image.Name) 
    Next 

End If 
相關問題