Прочитать статус проверки контрольного списка в vb.net, связанного с таблицей базы данных

Я могу успешно заполнить контрольный список в 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, который должен записывать результаты обратно в базу данных, возвращает исходные данные, а не изменения, которые я сделал. Вероятно, это связано с привязанным datatable в фоновом режиме?

Спасибо за помощь! Лукас


person Lukebo    schedule 17.01.2019    source источник


Ответы (1)


вам нужно обновить таблицу данных, когда вы изменяете checklistbox так

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
person Markus    schedule 17.01.2019
comment
Спасибо, Маркус! Я немного изменил ваш код, чтобы сделать его совместимым с моей базой данных (преобразовать CHECKED, UNCHECKED в TRUE, FALSE). СПАСИБО! - person Lukebo; 17.01.2019