VB.NET复选框检查

时间:2012-05-14 16:07:54

标签: asp.net vb.net

我有一个包含复选框字段的表单。在页面加载时,我想为我的数据库中的每个客户创建一个单独的复选框。我必须为每个客户创建复选框的代码工作正常。但是,我还想检查数据库中是否有客户设置为未经授权,如果他们那么我想在那里检查框。我还有用户检查框的情况的代码。如果选中一个框,我更新数据库,将未授权属性设置为true。我的问题是当我检查一个盒子它工作正常并且盒子被检查,但是如果我重新加载页面所有的盒子都未选中。因此,我的数据库更新不是更新数据库,也不是我检查页面加载方式的复选框是不正确的。有什么想法吗?

asp复选框字段的代码:

<asp:CheckBoxList id="check1" AutoPostBack="True" TextAlign="Right" OnSelectedIndexChanged="Check" runat="server">

</asp:CheckBoxList>

页面加载代码:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Dim sql As String = "SELECT Name, unauthorized, ID FROM Customer ORDER BY Name"
    Dim dt As DataTable = db.execDataTableQuery(sql, "Customer")
            Dim i As Integer
            For i = 0 To dt.Rows.Count - 1
                check1.Items.Add(New ListItem(CStr(dt.Rows(i).Item("Name"))))
                check1.Items(i).Value = CInt(dt.Rows(i).Item("ID"))
                check1.Items(i).Text = CStr(dt.Rows(i).Item("Name"))
                If CInt(dt.Rows(i).Item("unauthorized")) = 1 Then
                    check1.Items(i).Selected = 1
                Else
                    check1.Items(i).Selected = 0
                End If
            Next

        End Sub

更新数据库的代码:

    Sub Check(ByVal sender As Object, ByVal e As EventArgs)
        Dim sql As String
        If check1.SelectedItem.Selected = 1 Then
            sql = "UPDATE Customer SET unauthorized = 1 WHERE ID = @ID"
            db.execUpdateQuery(sql, New SqlClient.SqlParameter("@ID", check1.SelectedItem.Value))
        Else
            sql = "UPDATE Customer SET unauthorized = 0 WHERE ID = @ID"
            db.execUpdateQuery(sql, New SqlClient.SqlParameter("@ID", check1.SelectedItem.Value))
        End If
    End Sub

End Class

1 个答案:

答案 0 :(得分:1)

你需要在Not Page.IsPostback的Page_Load中包装你的代码,否则在回发时不会触发任何事件,并且由于你从数据库中覆盖它而导致选择丢失。

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Not IsPostback Then
        ' databind your CheckBoxList '
    End If
End Sub