我有一些需要绑定到DataTable的复选框。问题是复选框在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")
2条答案
按热度按时间i34xakig1#
因为你只是加载一行,我只需要手动设置和获取它:
(dtb.Rows(0).Field(Of String)("IN_USE") = "YES")
是一个布尔表达式,用于设置CheckState
。然后在check changed事件中:
这是相反的:将表格文本设置为“是”|“否”取决于检查状态。
表必须具有 * 表单级别范围 *(在问题中不清楚),您需要检查表是否有效,以及表中是否有任何行(如图所示)。
如果您正在处理表中的多行,并且可能将其显示在
DataGridView
中,则可以在CellFormatting
和CellParsing
事件中执行非常类似的操作,以将YES
来回转换为True/Checked。lymnna712#
另一个答案: