2013-07-11 42 views
1

我有一个从SQL Server检索数据到CheckedListBox设置默认选中的项目在CheckedLIstBox VB.Net

Dim queryString As String = "SELECT Facility FROM Database.dbo.Facility" 
    Dim connection As New SqlConnection(connectionString) 
    Dim command As New SqlCommand(queryString, connection) 
    connection.Open() 
    Dim dataReader As SqlDataReader = command.ExecuteReader() 
    Dim var As New DataTable 
    Dim source As New BindingSource 
    source.DataSource = dataReader 
    CheckList_Facility.DataSource = source 
    CheckList_Facility.ValueMember = "Facility" 
    connection.Close() 

结果效果很好代码,假设我有结果:

[ ]AA 
[ ]BB 
[ ]CC 

我想检查是否有“BB”,那么它会自动检查“BB”,使

[ ]AA 
[X]BB 
[ ]CC 

我试过,但失败了。一些喜欢

 For Each item In CheckedList_Facility.Items 
     If (item("Facility").ToString() = "BBB") Then 
      CheckedList_Region.SelectedValue = True 
    Next 

尝试,如果它确实会返回一个字符串,我测试的代码

For Each item In CheckedList_Facility.Items 
    MsgBox(item("Facility").ToString()) 
Next 

它不会返回 “AA”, “BB”, “CC”

+0

当你通过它进行调试时,它是否注意到'item(“Facilit y“)。ToString'是”BBB“?它只是不检查复选框? – Alex

+0

如果有BB在哪里?据我所见,你只从数据库中检索一个字段,这就是复选框的标签。 –

+0

@Adruan Wragg,它不是一个标签,而是一系列物品。检索代码的工作原理 - 它确实返回一个设施列表,如 – user2103670

回答

2

试试下面的代码

Dim queryString As String = "SELECT Facility FROM Database.dbo.Facility" 
Dim checkedValue As String = "BB" 
Dim connection As New SqlConnection(connectionString) 
Dim command As New SqlCommand(queryString, connection) 

connection.Open() 

Dim dataReader As SqlDataReader = command.ExecuteReader() 

If dataReader.HasRows Then 
    Do While dataReader.Read 
     Dim facility As String = dataReader.Item("Facility").ToString() 
     Dim checkedState As Boolean = facility = checkedValue 

     CheckList_Facility.Items.Add(facility, checkedState) 
    Loop 
End If 

connection.Close() 
+0

非常感谢。我只是测试你的代码,它确实..工作:)再次感谢 – user2103670