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

问题描述 投票:0回答:1

在我的应用程序中,用户可以根据公司的兴趣从数据表中选择不同的选项。因此,从名为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_Provider(in),客户端的ID
  3. Id Dewey_Subcat(in),类别的ID

因此,如果选择了一个复选框项,则存储的数据将为:

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]并且不检查其他项目?

谢谢!

sql asp.net sql-server checkbox
1个回答
1
投票

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

 While SqlDRDeweyCBL.Read()

        If SqlDRDeweyCBL("Id_Dewey_Subcat") = li.Value Then

            li.Selected = True
        Else

            li.Selected = False
        End If

    End While

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

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

© www.soinside.com 2019 - 2024. All rights reserved.