Я хочу связать список объектов с DataGridView в VB.Привязать список объектов к datagridview в VB
Сначала он работал с использованием datagrid.Rows.Add (...) для каждого результата, но это блокирует программу. Я прочитал, что это можно решить, связав список объектов с DataGridView с .DataSource. Но это не работает, мой datagridview остается пустым ...
Что не так? Это что-то в GUI-коде (см. Ниже)?
Это где логика происходит:
Public queryList As New List(Of _study)
...
If _objResponse.Status = CurrentStatus.Pending Then
Dim _newStudy As New _study
' Parse one study from the response (_objResponse.Dataset.[Get](Of String)(DicomTag.StudyDate))
_newStudy._studyID = _objResponse.Dataset.[Get](Of String)(DicomTag.StudyInstanceUID)
_newStudy._name = _objResponse.Dataset.[Get](Of String)(DicomTag.AccessionNumber)
' Save study info for later use
queryList.Add(_newStudy)
ElseIf _objResponse.Status = DicomStatus.Success
dgvResults.DataSource = queryList
...
Else
MsgBox("Failed")
End If
Вот класс _newStudy:
Public Class _study
Private _studyID As String
Private _name As String
Public Property _studyID() As String
Get
Return _studyID
End Get
Set(ByVal value As String)
_studyID = value
End Set
End Property
Public Property _name() As String
Get
Return _name
End Get
Set(ByVal value As String)
_name = value
End Set
End Property
End Class
А вот код DataGridView() GUI:
Private colName As System.Windows.Forms.DataGridViewTextBoxColumn
Private colID As System.Windows.Forms.DataGridViewTextBoxColumn
Private dgvResults As System.Windows.Forms.DataGridView
...
Me.dgvResults = New System.Windows.Forms.DataGridView()
Me.colID = New System.Windows.Forms.DataGridViewTextBoxColumn()
Me.colName = New System.Windows.Forms.DataGridViewTextBoxColumn()
Me.dgvResults.AllowUserToAddRows = false
Me.dgvResults.AllowUserToDeleteRows = false
Me.dgvResults.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill
Me.dgvResults.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize
Me.dgvResults.Columns.AddRange(New System.Windows.Forms.DataGridViewColumn() {Me.colID, Me.colName})
Me.dgvResults.Location = New System.Drawing.Point(6, 19)
Me.dgvResults.Name = "dgvResults"
Me.dgvResults.ReadOnly = true
Me.dgvResults.Size = New System.Drawing.Size(540, 206)
Me.dgvResults.TabIndex = 2
'colID
Me.colID.HeaderText = "Study ID"
Me.colID.DataPropertyName = "_studyID"
Me.colID.Name = "colID"
Me.colID.ReadOnly = true
'colPatientName
Me.colName.HeaderText = "Name"
Me.colName.DataPropertyName = "_name"
Me.colName.Name = "_name"
Me.colName.ReadOnly = true
...
CType(Me.dgvResults,System.ComponentModel.ISupportInitialize).EndInit
I подумайте, что DataPropertyName верна, чтобы получить связь между объектами и datagrid, правильно ...?
Большое спасибо!
Это не ясно из вашего кода * когда * управления DataGridView имеет свой DataSource набор. Это происходит постоянно? Только когда вы получите статус «Успех»? Только покажите нам реальный код, кстати, ваш класс _study не компилируется, и вам следует избегать подчёркивать публичные свойства и имена. Вы добавляете столбец Me.colPatientID дважды в сетку в дизайнере? – LarsTech