读取绑定到数据库表的vb.net中Checklistbox的检查状态

时间:2019-01-17 07:46:52

标签: database vb.net checklistbox

我可以使用以下代码成功地用存储在数据库中的数据填充vb.net中的复选框:

 Private Sub report_enter() Handles tp_report.Enter
    Dim rep As DataTable = sqlite.SelectData("SELECT field,name,obligatory from cnf_oblfields WHERE module='report'")

    clb_obl.DataSource = rep
    clb_obl.ValueMember = "field"
    clb_obl.DisplayMember = "name"
    For i = 0 To rep.Rows.Count - 1
        clb_obl.SetItemChecked(i, sqlite.Int2Bool(rep.Rows(i).Item(2)))
    Next
End Sub

现在,用户可以选中和取消选中某些框。我想将这些参数的新状态存储回表中。我尝试了这段代码:

Private Sub bt_obli_save_Click(sender As Object, e As EventArgs) Handles bt_obli_save.Click
    For Each item In clb_obl.Items
        Dim row As DataRow = item.row

        MsgBox("INSERT OR REPLACE INTO cnf_oblfields ('field', 'obligatory') VALUES ('" & item.item("field").ToString & "', '" & item.item("obligatory").ToString & "')")
    Next
End Sub

我的问题是,将结果写回到数据库的SUB会返回原始数据,而不是我所做的更改。这可能是由于后台绑定了数据表吗?

谢谢您的帮助! 卢卡斯

1 个答案:

答案 0 :(得分:1)

像这样修改清单框时,您必须更新数据表

Private Sub clb_obl_ItemCheck(sender As Object, e As ItemCheckEventArgs) Handles clb_obl.ItemCheck

    DirectCast(clb_obl.Items(e.Index), DataRowView)("obligatory") = e.NewValue

End Sub