【问题标题】:VB.NET Checkboxes checkingVB.NET 复选框检查
【发布时间】:2012-05-14 16:07:54
【问题描述】:

我有一个包含复选框字段的表单。在页面加载时,我想为我的数据库中的每个客户创建一个单独的复选框。我必须为每个客户创建复选框的代码工作正常。但是,如果客户设置为未经授权,我也想检查数据库,如果他们是,那么我想检查那里的框。我也有代码用于用户选中一个框的情况。如果选中了一个框,我会更新数据库,将未授权属性设置为 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

【问题讨论】:

    标签: asp.net vb.net


    【解决方案1】:

    您需要将 Page_Load 中的代码包装在 Not Page.IsPostback 中,否则在回发时不会触发任何事件并且选择会丢失,因为您正在从数据库中覆盖它。

    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
    

    【讨论】:

    • 我以前也有过,但没什么区别
    • 我似乎已经通过切换我的真假来修复它。另外,为了让我的代码在选择项目时更新,有没有更好的方法来做到这一点?
    猜你喜欢
    • 1970-01-01
    • 2017-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多