【发布时间】:2016-09-03 01:35:28
【问题描述】:
我有需要绑定到数据表的复选框。问题是复选框在 Oracle DB 字段中存储“YES”和“NO”值,而不是布尔值。如何绑定到这些值?
这不起作用:
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")
【问题讨论】:
-
认为您可能需要创建复选框类。有几件事。 social.msdn.microsoft.com/Forums/windows/en-US/…
-
谢谢,但是如何编写 Checkbox 类,我从来没有这样做过?...对不起,我是 VB.NET 初学者...如果没记错的话,这是针对 C# 的。
-
在您的 SQL 选择中,您可以创建一个布尔版本:
"SELECT ... (IN_USE = 'YES') AS bInUse FROM..."不过,您必须在 checkchanged 事件中设置/切换真实列。dtb是什么? -
是的,考虑一下,我会接受 Plutonix 的建议。只需循环数据表中的每一行并将列更新为 1/0,具体取决于它是/否,那么它应该使用您已经正确拥有的代码进行绑定。 :) 像这样对于每一行 As DataRow in dad.Rows If row("IN_USE") = "Yes" Then row("IN_USE") = "1" Else row("IN_USE") = "0" End If Next
-
好的。而不是使用 1 和 0 使用 "True" 和 "False" - 这就是我得到它的方式,我已经让它在我的解决方案中工作:)
标签: .net vb.net oracle checkbox