使用YES / NO值将数据库绑定到Datatable

时间:2016-08-30 13:55:04

标签: .net vb.net oracle checkbox

我有需要绑定到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")

1 个答案:

答案 0 :(得分:2)

由于您只是加载一行,我只需手动设置和获取它:

(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")

然后在检查更改事件:

DataGridView

反过来:将表格文本设置为&#34; YES&#34; |&#34; NO&#34;取决于检查状态。

该表必须具有表单级别范围(问题中不清楚),您需要检查表是否有效以及表中是否有任何行(示出)。

如果你正在处理表格中的多行并且可能在CellFormatting中显示它,那么你可以在CellParsingYES事件中做一些非常相似的事情来来回翻译从_isDisabled: boolean; @Input('myDisabled') set isDisable(value: boolean) { this._isDisabled = value; this.disable(); } 到True / Checked。