VB.NET CheckboxList удваивается при нажатии кнопки.Зачем? - PullRequest
0 голосов
/ 16 сентября 2011

Каждый раз, когда я нажимаю кнопку «Удалить», количество галочек удваивается:

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

Конечный класс

Контрольный список не обновляется, поэтому удаленный мной флажок удаляется из контрольного списка. Как мне это сделать? Спасибо!

Ответы [ 2 ]

1 голос
/ 16 сентября 2011

При нажатии кнопки снова запускается Page_Load, поэтому код, который добавляет флажки, запускается второй раз.

Добавьте проверку для Page.IsPostBack и добавляйте флажки, только если этоpostback.

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

(надеюсь, синтаксис правильный ... Не используется для VB)

0 голосов
/ 16 сентября 2011

все содержимое обработчика события 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...