Я работаю над настольным приложением, разработанным на vb.net. Я пытаюсь выбрать элементы в checklistbox в зависимости от значений, которые я получаю из базы данных. Ниже приведен код для заполнения checkedlistboxesФормы Windows CheckedListBox issue
Private Sub LoadDisapprovalList()
cblFedralReasons.Items.Clear()
cblStateReasons.Items.Clear()
cblFedralReasons.DataSource = Main.DataClient.DisapprovalReasonList_Get(FedralReason)
cblFedralReasons.DisplayMember = "DisapprovalReasonTypeDesc"
cblFedralReasons.ValueMember = "DisapprovalReasonTypeGenId"
cblStateReasons.DataSource = Main.DataClient.DisapprovalReasonList_Get(StateReason)
cblStateReasons.DisplayMember = "DisapprovalReasonTypeDesc"
cblStateReasons.ValueMember = "DisapprovalReasonTypeGenId"
End Sub
После того, что я пытаюсь выбрать элементы на основе значений из базы данных. Вот код
Private Sub LoadApplicationDisapprovalReasons()
Dim lstApplicationDisapprovalReasons As New List(Of DataService.usp_ApplicationDisapprovalReason_Get_Result)
lstApplicationDisapprovalReasons = Main.DataClient.ApplicationDisapprovalReason_Get(_SeqID)
If lstApplicationDisapprovalReasons.Count > 0 Then
For Each item In lstApplicationDisapprovalReasons
Dim selectedDisapprovalId As Integer = item.DisapprovalReasonTypeGenId
Select Case item.DisapprovalReasonType
Case FedralReason
Dim selectedIndex = cblFedralReasons.Items.IndexOf(selectedDisapprovalId)
cblFedralReasons.SetItemCheckState(selectedIndex, CheckState.Checked)
Case StateReason
Dim selectedIndex = cblStateReasons.Items.IndexOf(selectedDisapprovalId)
cblStateReasons.SetItemCheckState(selectedIndex, CheckState.Checked)
End Select
Next
End If
End Sub
Но проблема cblFedralReasons.Items.IndexOf всегда возвращает -1. Все данные из базы данных поступают правильно, но что-то странное происходит с checklistbox, который я не мог понять.
EDIT: Также, когда я пытаюсь получить текст элемента, используя следующий код, он возвращает мне имя моих коллекций, а не текст.
cblFedralReasons.items(1).tostring
возвращает
DisapprovalReasonList
, а не текст этого пункта!
Похоже, что CLB работает с другим набором объектов, чем в списке. Что возвращает 'DisapprovalReasonList_Get' (точный тип)? ToString возвращает имя типа, если класс не переопределяет его. – Plutonix
Это список типов List (Of DataService.usp_DisapprovalReasonList_Get) – user615611