CheckBoxList.Selected继续返回False值

时间:2012-06-13 11:50:54

标签: asp.net vb.net checkboxlist

我的页面上有一个CheckBoxList表现不佳。

这个想法是,一旦单击表单上的提交按钮,应用程序应清除与特定用户相关的所有行的数据库表,然后根据用户的CheckBoxList选择重新插入新的。

问题在于,无论选择CheckBoxList中的任何(或所有)项目,应用程序都会继续Selected = False

这是我的代码:

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

    loadRegions()
End Sub

Private Sub loadRegions()

    Dim db As New Database

    Dim sql As String = "select * from regions"

    Dim dr As MySqlDataReader = db.execDB(sql, "Text", Nothing, "DataReader", False)

    If dr.HasRows Then

        cblRegion.DataSource = dr
        cblRegion.DataTextField = "regionname"
        cblRegion.DataValueField = "regionid"
        cblRegion.DataBind()
    End If

    dr.Close()
End Sub

Protected Sub btnRegister_Click(sender As Object, e As System.EventArgs) Handles btnRegister.Click
        ' ============================================================
        ' There's more code in here, but it's irrelevant to this paste
        ' ============================================================

        Dim sql As String = "delete from userregions where userid = " & lblUserID.Text & ";"

        For i As Integer = 0 To cblRegion.Items.Count - 1
            If cblRegion.Items(i).Selected Then
                sql &= "insert into userregions (userid, regionid)" & _
                    "values(" & UserID & ", " & cblRegion.Items(i).Value & ")"

                db.execDB(sql, "Text", Nothing, "None", False)
            End If
        Next
End Sub

记录
我知道这里有SQL注入的可能性。我将在循环工作后立即使用参数。

感谢您的时间。 任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

您只需要在初始加载时调用loadRegions而不是回发:

Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
    If Not Page.IsPostBack Then
        loadRegions()
    End If
End Sub

否则您将失去更改的值,并且不会触发事件。

答案 1 :(得分:1)

在页面加载中,写下以下内容:

If Not IsPostBack
    loadRegions()
End If

答案 2 :(得分:1)

在Page_Load方法中添加以下代码行“If IsPostBack Then Return”。

Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
    If IsPostBack Then Return
    loadRegions()
End Sub
相关问题