我有需要绑定到数据表的复选框。问题是复选框在Oracle DB字段中存储了“是”和“否”值,而不是布尔值。如何绑定这些值?
这不起作用:
ChkInUse.DataBindings.Add("Checked", dtb, "IN_USE")
我收到错误消息:“字符串未被识别为有效的布尔值”。
编辑(我的完整代码):
Dim SQL As String = "SELECT * from MyTable WHERE ID=" & Form1.DataGridView1.CurrentRow.Cells(0).Value.ToString
Dim dtb As New DataTable()
Using con As OracleConnection = New OracleConnection("Data Source=MyDB;User Id=Lucky;Password=MyPassword;")
Try
con.Open()
Using dad As New OracleDataAdapter(SQL, con)
dad.Fill(dtb)
End Using
ChkInUse.DataBindings.Add("Checked", dtb, "IN_USE")
由于您只是加载一行,因此我将手动设置并获取它:
dad.Fill(dtb)
' set the check
chkInUse.Checked = (dtb.Rows(0).Field(Of String)("IN_USE") = "YES")
(dtb.Rows(0).Field(Of String)("IN_USE") = "YES")
是一个导致布尔值的表达式,然后该布尔值用于设置CheckState
。
然后在检查更改事件中:
' early exit if there is no datatable yet or no rows
If dtb Is Nothing OrElse dtb.Rows.Count < 1 Then Return
dtb.Rows(0)("INUSE") = If(chkInUse.Checked, "YES", "NO")
这样做的相反:将表文本设置为“ YES” |“ NO”,具体取决于检查的状态。
该表必须具有表单级别的范围(问题中不清楚),您将需要检查该表是否有效以及表中是否有任何行(如图所示)。
如果您要处理表中的多行,并可能将其显示在中DataGridView
,则可以在CellFormatting
和CellParsing
事件中执行非常类似的操作,以将它们来回转换YES
为True / Checked。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句