问题:我想从SQL Server数据库表中检索复选框的名称,看看是否在“if”语句中检查了它。
界面:我的表单由一个列表框,一个按钮和一个复选框组成。
SQL Server表:
ID Name cbName
1 Rest cbRest
我想写:
sb = dt.rows(0)(cbName)
If sb.Checked() = True Then
ListBox1.Items.Add(dt.Rows(0)(1).ToString())
Else
MsgBox("Nothing checked")
End If
预期输出应该是列表框中的Rest。当然,下一步是循环使用数百个复选框,但是现在我只想澄清如何使其工作。
现在我收到以下错误:
无法将'System.String'类型的对象强制转换为'System.Winddows.Forms.CheckBox'
我正在使用Visual Basic Express 2008和SQL Server 2008 Express,64位Windows 7 Pro
提前致谢
答案 0 :(得分:0)
您必须遍历所有控件并找到带有id / name [cbRest]的控件。一旦你掌握了控件(这是一个复选框),你可以使用
If sb.Checked() = True Then
ListBox1.Items.Add(dt.Rows(0)(1).ToString())
Else
MsgBox("Nothing checked")
End If
其中sb将是您找到的控件。
答案 1 :(得分:0)
你需要声明一个变量(sb)这是一个按钮的片段:
Dim btn As Button
...
btn = CType(Controls("Button1"), Button)
在您的情况下,您将使用SQL中的cbName值代替“Button”。
'Controls'是持有按钮/复选框的父级。该代码段与表单上的按钮一起使用。如果你有一个容器拿着复选框,请使用container_name.Controls()。
答案 2 :(得分:0)
假设您已将复选框直接添加到页面,则可以使用Me.Controls.Item(controlID)
按名称查找控件,因此在您的情况下,它将是
Dim sb as CheckBox = CType(Me.Controls.Item(dt.rows(0)("cbName")), CheckBox)