如何根据数据库值检查或取消选中复选框列表项

时间:2017-12-25 22:47:16

标签: sql asp.net sql-server checkbox

在我的应用程序中,用户可以根据公司的兴趣从数据表中选择不同的选项。因此,从名为SEL_Dewey_Subcat_Raw的存储过程填充一个checkboxlist,它将ID值和名称输出到复选框列表。这没关系,而且工作正常。

但现在我需要用户能够编辑他们之前选择的内容。所以我需要根据他们之前选择的内容填充复选框列表,如果在选择该特定项目之前选择了该类别。

填充CBL的代码:

SELECT * FROM [dbo].[Dewey_Subcat] ORDER BY[dbo].[Dewey_Subcat].[Nombre] ASC

此信息存储在名为[dbo]的数据表中。[Proveedores_Dewey],它有以下列:

  1. ID(PK int)
  2. Id_Proveedor(int),客户端的ID
  3. Id_Dewey_Subcat(int),类别的ID
  4. 因此,如果选择了一个复选框项,则存储的数据将为:

    ID:1 Id_Proveedor:24(客户ID) Id_Dewey_Subcat:38(类别)

    这是我到目前为止编辑面板复选框列表的代码,但它不起作用!

    For Each li As ListItem In Dewey_RBL.Items
            Dim SqlConDeweyCBL As SqlConnection
            Dim SqlComDeweyCBL As SqlCommand
            Dim SqlDRDeweyCBL As SqlDataReader
            SqlConDeweyCBL = New SqlConnection(ConfigurationManager.ConnectionStrings("EnchufeBBMCA").ToString())
            SqlComDeweyCBL = New SqlCommand("SELECT [dbo].[Proveedores_Dewey].[Id_Dewey_Subcat] FROM [dbo].[Proveedores_Dewey] WHERE([dbo].[Proveedores_Dewey].[IdProveedor] = '" & empresaId & "')", SqlConDeweyCBL)
            If SqlConDeweyCBL.State = ConnectionState.Closed Then
                SqlConDeweyCBL.Open()
            End If
            SqlDRDeweyCBL = SqlComDeweyCBL.ExecuteReader()
            While SqlDRDeweyCBL.Read()
    
                If SqlDRDeweyCBL("Id_Dewey_Subcat") = li.Value Then
    
                    li.Selected = True
                Else
    
                    li.Selected = False
                End If
    
            End While
            SqlDRDeweyCBL.Close()
            SqlConDeweyCBL.Close()
        Next
    

    那么如何查看[dbo]中存储的复选框列表中的项目。[Proveedores_Dewey]并取消选中其他项目?

    谢谢!

1 个答案:

答案 0 :(得分:1)

找到相应的值时,以下代码选择当前项:

{{1}}

然而,之后,将从数据库中获取下一个值并进行检查。它不等于i.Value(因为前一个值是),而li.Selected属性将重置为False。

在执行li.Selected = True代码后,打破当前循环并检查下一个'li'项。